一. AOP的概念
1. Aspect Oriented Programing,
即面向方面(切面)编程。
2. AOP是一种编程思想,是对OOP的补充,
可以进一步提高编程的效率
二. AOP的实现
1. AspectJ
语言级的实现
定义了AOP语法
编译时织入代码,有一个专门的编译器,用来生成遵守Java字节码规范的class文件
2. Spring AOP
java实现
运行时通过代理方式织入代码
只支持方法类型的连接点
spring支持AspectJ的集成
三. 代码织入时间
1. 编译时织入,需使用特殊的编译器。
2. 装载时织入,需使用特殊的类装载器。
3. 运行时织入,需为目标生成代理对象。
四. Spring AOP
Spring AOP_价值成长的博客-CSDN博客
1. JDK动态代理:用接口代理
Java提供的动态代理技术,可以在运行时创建接口的代理实例。
Spring AOP默认采用此种方式,在接口的代理实例中织入代码。目标组件必须有接口。
2. CGLib动态代理:用子类代理
采用底层的字节码技术,在运行时创建子类代理实例。
当目标对象不存在接口时,Spring AOP会采用此种方式,在子类实例中织入代码。