Spring AOP

大家好,我是IT修真院深圳分院第4期学员,一枚正直善良的JAVA程序员。


今天给大家分享一下,修真院官网JAVA任务2中,深度思考部分的知识点——Spring AOP

一、背景介绍

AOP,即面向切面编程。是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。


二、知识剖析

今天小课堂简单的介绍一下如何使用JDK动态代理实现切面编程。然后详细的介绍一下使用注解方法来实现面向切面编程

SpringAOP分为三个部分,切面类,目标类,Spring配置


AOP常用的切面方法

1.Before  前置增强,在目标方法执行前实施增强

2.Around  环绕增强,在目标方法执行前后实施增强

3.AfterReturning   后置增强,在目标方法执行后实施增强

4.AfterThrowing   抛出异常增强,处理抛出的异常


代理实现

在截断目标类的运行,生成目标类的子类,在这个子类中加入诸如Before或Around等方法


JDK代理

只能代理接口,动态代理性能差,但创建动态代理的速度快

CGLib代理

能代理接口和类,与上面相反,动态代理性能好,但创建动态代理的速度慢

结论:若代理对象启用单例模式(无论new或get多少次,容器中都只有一个对象,即singleton)则适用于CGLib动态代理,相反,则适用于JDK动态代理


注解实现

三个步骤

1.将切面类和目标类诸如IOC容器,由Spring进行管理

2.在Spring配置文件中加入基于@Aspectj的切面驱动,即aop:aspectj-autoproxy

3.编写切面类的增强逻辑,以及其匹配逻辑



三、常见问题

SpringAOP有什么用?

2.怎么开启JDK代理或CGLib代理?


四、解决方案

1.SpringAOP有什么用?

我们任务中有用到的:性能统计。在复盘项目中可以用到的:日志打印、异常抛出处理。除此之外还可以做到权限管理、事务处理、安全控制等

2.怎么开启JDK代理或CGLib代理?

在Spring配置文件的切面驱动中加入proxy-target-class="true"字段,"true"表示开启CGLib代理,"false"表示开启JDK代理,若不加入这一字段,则默认启用JDK代理


五、编码实战


六、扩展思考


七、参考文献

《精通Spring 4.x企业应用开发实战》


八、更多讨论



Spring AOP_腾讯视频


视频链接:视频链接

PPT链接:PPT

感谢大家观看

今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~

技能树.IT修真院

“我们相信人人都可以成为一个工程师,现在开始,找个师兄,带你入门,掌控自己学习的节奏,学习的路上不再迷茫”。

这里是技能树.IT修真院,成千上万的师兄在这里找到了自己的学习路线,学习透明化,成长可见化,师兄1对1免费指导。快来与我一起学习吧~

我的邀请码:13299900,或者你可以直接点击此链接:http://www.jnshu.com/login/1/13299900

你可能感兴趣的:(Spring AOP)