目录
连接点(Join Point) 目标对象中,所有可以增强的方法
AOP代理(AOP Proxy) 将通知织入到目标对象后,形成代理对象
AOP概述
-
含义
AOP(Aspect Oriented Programming 面向切面编程),通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。横向重复代码,纵向抽取
-
作用
常用于权限校验、日志记录、性能统计、安全控制、事务处理、异常处理等
-
底层实现
JDK的动态代理(接口)
针对实现了接口的类产生代理
CGLIB的动态代理(继承)
针对没有实现接口的类产生代理,应用的是底层的字节码增加技术,生成当前类的子类对象
-
AOP术语
连接点(Join Point) 目标对象中,所有可以增强的方法
连接点是指在程序执行过程中某个特定的点,比如某方法调用的时候或者处理异常的时候
切点(Pointcut) 目标对象中,已经增强的方法
指匹配连接点的断言。通知与一个切入点表达式关联,并在满足这个切入的连接点上运行,例如:当执行某个特定的名称的方法
通知(Advice) 增强的代码
指在切面的某个特定的连接点上执行的动作。Spring切面可以应用5中通知:
1)前置通知(Before) :在目标方法执行之前执行
2)后置通知(After) :在目标方法执行之后执行,发送异常不会执行
3)返回通知(After-returning):无论目标方法是否出现异常,最终通知都会执行
4)异常通知(After-throwing) :在目标方法抛出异常后执行
5)环绕通知(Around) :在目标方法调用之前和之后执行
目标对象(Target Object) 被代理的对象
目标对象是被一个或者多个切面所通知的对象
AOP代理(AOP Proxy) 将通知织入到目标对象后,形成代理对象
AOP代理是指AOP框架创建的对对象,用来实现切面契约(包括通知方法等功能)
织入(Wearving) 将通知应用到切入点的过程
指把切面连接到其他应用出程序类型或者对象上,并创建一个被通知的对象。或者说形成代理对象的方法的过程
切面(Aspect) 切入点+通知
切面是一个关注点的模块化,这个关注点可能是横切多个对象