一:什么是AOP
AOP : Aspect Oriented Programming 面向切面编程。技术支撑为动态代理,它为解耦而生。
二:AOP实现原理
AOP分为静态AOP和动态AOP。
静态AOP是指AspectJ实现的AOP,他是将切面代码直接编译到Java类文件中。
动态AOP是指将切面代码进行动态织入实现的AOP。
Spring的AOP为动态AOP,实现的技术为: JDK提供的动态代理技术 和 CGLIB(动态字节码增强技术) 。但都是基于代理模式 , 都是生成一个代理对象 。
三:AOP术语解释及执行流程
四:AOP与OOP的区别
AOP、OOP在字面上虽然非常类似,但却是面向不同领域的两种设计思想。OOP(面向对象编程)针对业务处理过程的实体及其属性和行为进行抽象封装,以获得更加清晰高效的逻辑单元划分。
而AOP则是针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各部分之间低耦合性的隔离效果。这两种设计思想在目标上有着本质的差异
五:AOP总结
在不影响主业务代码纵向执行的情况下,横向切入需要加入的其他内容(如权限模块,事物模块,日志模块等),但并不影响主业务代码的纯洁性。