分享人:张庆东
1.背景介绍
2.知识剖析
3.常见问题
4.解决方案
5.编码实战
6.扩展思考
7.参考文献
8.更多讨论
AOP,即面向切面编程。是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。
今天小课堂简单的介绍一下如何使用JDK动态代理实现切面编程。然后详细的介绍一下使用注解方法来实现面向切面编程
SpringAOP分为三个部分,切面类,目标类,Spring配置
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.编写切面类的增强逻辑,以及其匹配逻辑
1.SpringAOP有什么用?
2.怎么开启JDK代理或CGLib代理?
1.SpringAOP有什么用?
我们任务中有用到的:性能统计。在复盘项目中可以用到的:日志打印、异常抛出处理。除此之外还可以做到权限管理、事务处理、安全控制等
2.怎么开启JDK代理或CGLib代理?
在Spring配置文件的切面驱动中加入proxy-target-class="true"字段,"true"表示开启CGLib代理,"false"表示开启JDK代理,若不加入这一字段,则默认启用JDK代理
《精通Spring 4.x企业应用开发实战》
今天的分享就到这里啦,欢迎大家提问和探讨!