一、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)
一种特殊的通知
三、通知
1、前置通知
方法执行前执行的通知
2、后置通知
方法执行后执行的通知,若切入点运行错误则不会运行
3、环绕通知
方法执行前执行一个通知,方法执行后执行一个通知,若切入点运行错误则不会运行
4、异常通知
切入点运行异常时会出现的通知
5、最终通知
不管切入点方法运势是否错误都会出现的通知
四、AOP底层实现
1、静态AOP
指aspectJ实现的AOP,将切面代码直接编译到JAVA类文件中
2、动态AOP
指将切面代码进行动态织入实现AOP
3、实现
JDK提供的动态代理技术和CGLIB动态字节码增强技术