什么是AOP
本质是由 AOP 框架修改业务组件的源代码,为系统中的业务组件添加某种通用功能。
按照 AOP 框架修改源代码的时机,可以将其分为两类:
- 静态 AOP 实现:AOP 框架在编译阶段对程序源代码进行修改,生成了静态的 AOP 代理类,比如 AspectJ。
- 动态 AOP 实现:AOP 框架在运行阶段对动态生成代理对(借助动态代理实现),如 SpringAOP。
AOP术语
- 通知/增强(Advice): AOP 框架中的增强处理。描述切面何时执行以及如何执行。
- 前置增强
- 环绕增强
- 异常增强
- 返回值增强
- 连接点(join point):增强执行的位置。在 Spring AOP 中,连接点总是方法的调用。
- 切点(PointCut): 具体的连接点。
- 切面(Aspect): 切面是增强和切点的结合。
- 引入(Introduction):特殊增强,向现有的类添加新的方法或者属性。
- 织入(Weaving): 将增强添加到目标对象中,并创建一个被增强的对象。织入分为如下三个时期:
- 编译期:AspectJ
- 类加载
- 运行期:spring的动态代理
Spring如何选择是用JDK还是cglib?
1、当bean实现接口时,会用JDK代理模式
2、当bean没有实现接口,会用cglib实现
参考资料
https://www.cnblogs.com/joy99/p/10941543.html
版权声明:本文为博主原创文章,欢迎转载,转载请注明作者、原文超链接,感谢各位看官!!!
本文出自:monkeyGeek
座右铭:生于忧患,死于安乐
欢迎志同道合的朋友一起交流、探讨!
