AOP-----Aspect Oriented Programing的简称,通常译作“面向切面编程”,它一般只适合于具有横切逻辑的应用场合,例如:事务管理、日志记录、性能监测、访问控制等。AOP通过横向抽取机制为一些无法通过纵向继承体系进行抽象的重复性代码提供解决方案。
织入是将增强添加进目标类具体连接点上的过程,根据实现技术的不同,AOP有三种织入的方式:
(1)编译期织入,要求使用特殊的Java编译器;
(2)类装载期织入,要求使用特殊的类装载器;
(3)动态代理织入,运行期为目标类添加增强生成子类。
Spring AOP 采用动态代理织入的方式,使用了两种代理机制
一个类被AOP织入增强后,就产生一个结果类,它是融合了原始目标类和增强逻辑的代理类。根据代理方式的不同,代理类可能是和原始类具有相同接口的类,也可能是原始类的子类,可以采用和调用原始类相同的方式调用代理类。