为什么要用Spring AOP呢?少写代码、专注自身业务逻辑实现(关注本身的业务而不去想其它事情,如安全、事务、日志等),用点上档次的话说:通过非侵入式的方式实现我们要实现的功能。
创新互联建站-专业网站定制、快速模板网站建设、高性价比南阳网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式南阳网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖南阳地区。费用合理售后完善,10余年实体公司更值得信赖。我们为什么要用Spring AOP来实现系统日志呢?系统日志的特点是在系统的多个模块中都要用到,为了实现日志的统一管理,我们一般有以下三种做法:
- 定义日志实现类,在需要记录日志的地方创建实例来进行调用;
- 定义一个日志接口及实现类,要用到日志的地方继承该接口(为什么是要定义接口,而不是直接定义类,是因为接口能够实现多继承,而我们的后台类中有不少本身就是要继承相应的接口的,这样不会因为日志接口的引入而影响我们其他的业务实现);
- 引入Spring AOP,面向切面编程,非侵入式的实现日志功能。
分析以上三种方式,都可以实现系统日志功能:
- 但第1种太繁琐了,搞得到处都是,不好看啊,也显得low;
- 第2种虽然不像第1种一样,但要记录日志就非得继承接口,还得进行一系列的调用方法、传递参数,总觉得额外增加了好多的累赘;
- 第3种,还不赖,只需在要记录日志的方法上添加一个注解就行了,能够记录的动态日志内容(区别于网上好多文章介绍的内容,记录的都是静态内容,简单是简单,了,但不实用啊)可以相当丰富,代码好干净,看着就爽。
把大象装冰箱要几步?第一步打开冰箱,第二步把大象装进去,第三步关上冰箱门,齐活。
同样,Spring AOP实现系统日志要几步呢?
第一步自定义注解类;
第二步定义切面类;
第三步在普通类中的方法上加入自定义日志注解,齐活。
下面一张图说明:
理解了上面的图,您就已经可以利用Spring AOP来实现您自己的系统日志了。
系统日志一般保存在数据库里面,以方便管理人员的浏览查询。另外我们需要做到不同的操作类型要记录不同的内容,如增加或删除了数据,那么要记录增加或删除的详细信息,如果做了修改,日志要能记录修改前后的值,等等,这些工作都在第二步定义切面类中实现。
有关详尽的代码,大家可以参考我的视频:https://edu.51cto.com/sd/091c7 ,这里就不详细贴出来了
虽然说我不想讲解Spring AOP的概念,但必要的概念大家还是要清楚的,否则就会云山雾罩,照猫画虎可能画的都会不像。
对于下面Spring AOP的概念,我尽量讲人话:
连接点(JoinPoint):方法的前面、后面以及异常都是连接点,应用时的类为ProceedingJoinPoint;
切入点(Pointcut):就是在方法前面、还是后面或者是前后都织入,对应注解:@Before、@After、@Around;
织入(weaving):就是在方法前面、还是后面或者是前后都织入;对应注解:@Retention,包括三种类型,SOURCE、CLASS、RUNTIME、指明注解的生命周期,一般采用RUNTIME(运行时注解);
目标(target):向方法上添加新方法属性,对应注解:@Target;
切面(aspect):具体干活的类,对应注解:@Aspect;
另外还有代理(proxy)、通知(Advice)、引入(introduction)这三个概念,也就是三个概念,便于你更好的理解AOP机制。(不太恰当,好比面向对象编程,就要理解封装、继承和多态一样),理解最好,不理解也不会太影响您工作的开展。
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。