Spring(二)
AOP
面向切面编程(Aspect Oriented Programming)。AOP是一种思想,所有符合AOP思想的技术,都可以看作AOP的实现。通过java的动态代理机制,就可以很容易实现AOP的思想,实际上Spring的AOP也是建立在Java的代理机制上。
原理
将复杂的需求分解出不同方面,将散布在系统中的公共功能集中解决。
采用代理机制组装起来运行,在不改变原程序的基础上对代码段进行增强处理,增加新的功能。
AOP术语
切面(Aspect)
切面是对象操作过程中的截面,实际上切面是一段程序代码,这段代码将被植入到程序流程中
连接点(Joinpoint)
对象操作过程中的某个阶段点,实际上是对象的一个操作,例如对象调用某个方法、读写对象的实例或者某个方法抛出了异常等
切入点(Pointcut)
切入点是连接点的集合,切面与程序流程的交叉点便是程序的切入点,确切的说它是切面注入到程序中的位置
增强(Advice)
又翻译成通知,定义了切面是什么以及何时使用,描述了切面要完成的工作和何时需要执行这个工作。是织入到目标类连接点上的一段程序代码。增强包含了用于添加到目标连接点上的一段执行逻辑,又包含了用于定位连接点的方位信息。(所以spring提供的增强接口都是带方位名:BeforeAdvice(表示方法调用前的位置)、AfterReturninAdvice(表示访问返回后的位置)、ThrowAdvice等等,所以只有结合切点和增强两者一起才能确定特定的连接点并实施增强逻辑)。增强又分前置增强、后置增强、环绕增强、异常抛出增强、最终增强等类型。
目标对象(Target)
所有被增强的对象都是目标对象,目标对象被AOP所关注,AOP会注意目标对象的变动,随时准备向目标对象注入切面
织入(Weaving)
织入是将切面功能应用到目标对象的过程,由代理工厂创建一个代理对象,这个代理可以为目标对象执行切面功能
代理(Proxy)
AOP框架创建的对象。一个类被AOP织入增强之后,就产生了一个结果类,它是融合了原类和增强逻辑的代理类
总结


浙公网安备 33010602011771号