一、Aop:面向切面编程(OOP扩展和延续)
1、核心:
横向重复、纵向抽取
2、优点:
1)、对业务的各个部分进行分离
2)、降低业务逻辑各部分之间的耦合度
3)、提高程序可用性
4)、提高开发效率
3、功能
日志记录、性能统计、安全控制、事务处理、异常处理
4、AOP与OOP的区别
一、OOP(面向对象编程)
针对业务处理过程的实体及属性进行抽象封装,获得更加清洗高效的逻辑单元划分
二、AOP(面向切面编程)
针对业务处理过程中的切面进行提取,面对的是处理过程中的某个步骤或阶段,获得逻辑过程中个部分低耦合性的隔离效果
ood/oop是面向名词领域;aop面向动词领域。两者有本质差异
二、AOP相关术语
1、目标对象(target)
指需要被增强的对象,springAop是代理魔兽实现这个对象,永远是被代理对象
2、连接点(join point)
指被增强的方法
3、通知\增强(advice)
实际增强的方法。分为前置、后置、异常、环绕、最终通知
4、切面(aspect)
切入点和通知的结合
5、织入(weaving)
目标对象的连接点被增强的过程
6、代理(poxy)
一个类被AOP织入增强后,产生一个代理类
7、引介(introduction)
一种特殊的通知
三、AOP底层实现
1、静态AOP
指aspectJ实现的AOP,将切面代码直接编译到JAVA类文件中
2、动态AOP
指将切面代码进行动态织入实现AOP
3、实现
JDK提供的动态代理技术和CGLIB动态字节码增强技术