温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Spring AOP实现系统日志功能

发布时间:2020-05-30 12:54:00 来源:亿速云 阅读:387 作者:鸽子 栏目:编程语言
1、引言

为什么要用Spring AOP呢?少写代码专注自身业务逻辑实现(关注本身的业务而不去想其它事情,如安全、事务、日志等),用点上档次的话说:通过非侵入式的方式实现我们要实现的功能

我们为什么要用Spring AOP来实现系统日志呢?系统日志的特点是在系统的多个模块中都要用到,为了实现日志的统一管理,我们一般有以下三种做法:

  1. 定义日志实现类,在需要记录日志的地方创建实例来进行调用;
  2. 定义一个日志接口及实现类,要用到日志的地方继承该接口(为什么是要定义接口,而不是直接定义类,是因为接口能够实现多继承,而我们的后台类中有不少本身就是要继承相应的接口的,这样不会因为日志接口的引入而影响我们其他的业务实现);
  3. 引入Spring AOP,面向切面编程,非侵入式的实现日志功能。

分析以上三种方式,都可以实现系统日志功能:

  • 但第1种太繁琐了,搞得到处都是,不好看啊,也显得low;
  • 第2种虽然不像第1种一样,但要记录日志就非得继承接口,还得进行一系列的调用方法、传递参数,总觉得额外增加了好多的累赘;
  • 第3种,还不赖,只需在要记录日志的方法上添加一个注解就行了,能够记录的动态日志内容(区别于网上好多文章介绍的内容,记录的都是静态内容,简单是简单,了,但不实用啊)可以相当丰富,代码好干净,看着就爽。
2、Spring AOP实现系统日志要几步?

把大象装冰箱要几步?第一步打开冰箱,第二步把大象装进去,第三步关上冰箱门,齐活。
同样,Spring AOP实现系统日志要几步呢?

第一步自定义注解类;  
第二步定义切面类;  
第三步在普通类中的方法上加入自定义日志注解,齐活。
下面一张图说明:

Spring AOP实现系统日志功能

理解了上面的图,您就已经可以利用Spring AOP来实现您自己的系统日志了。

系统日志一般保存在数据库里面,以方便管理人员的浏览查询。另外我们需要做到不同的操作类型要记录不同的内容,如增加或删除了数据,那么要记录增加或删除的详细信息,如果做了修改,日志要能记录修改前后的值,等等,这些工作都在第二步定义切面类中实现。

有关详尽的代码,大家可以参考我的视频:https://edu.51cto.com/sd/091c7  ,这里就不详细贴出来了

3、Spring AOP必要知识点

虽然说我不想讲解Spring AOP的概念,但必要的概念大家还是要清楚的,否则就会云山雾罩,照猫画虎可能画的都会不像。

对于下面Spring AOP的概念,我尽量讲人话:

连接点(JoinPoint):方法的前面、后面以及异常都是连接点,应用时的类为ProceedingJoinPoint;  
切入点(Pointcut):就是在方法前面、还是后面或者是前后都织入,对应注解:@Before、@After、@Around;  
织入(weaving):就是在方法前面、还是后面或者是前后都织入;对应注解:@Retention,包括三种类型,SOURCE、CLASS、RUNTIME、指明注解的生命周期,一般采用RUNTIME(运行时注解);  
目标(target):向方法上添加新方法属性,对应注解:@Target;  
切面(aspect):具体干活的类,对应注解:@Aspect;

另外还有代理(proxy)、通知(Advice)、引入(introduction)这三个概念,也就是三个概念,便于你更好的理解AOP机制。(不太恰当,好比面向对象编程,就要理解封装、继承和多态一样),理解最好,不理解也不会太影响您工作的开展。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI