一、AOP(面向切面)的作用就是对代码进行进行拦截,拦截在之后做一些操作,操作之后回到原有的业务逻辑继续执行,实现业务逻辑和系统服务的分离。AOP是对面向对象补充,面向对象定义的是纵向业务,面向切面定义的是横向业务。
二、AOP相关概念:
1、切面(aspect):系统服务,影响多个业务逻辑的公共模块
2、横切关注点:对那些方法进行拦截,拦截之后做什么操作。
3、链接点(joinpoint):程序运行的时间点,一个方法的执行,异常的处理等等。
4、切入点(poincut):定义链接点的拦截规则,对那些链接点进行拦截,不可能对所有链接点进行拦截,拦截符合条件的的链接点。
5、通知(advice):拦截代码后所执行的操作,分为前置、后置、最后、异常、环绕(可以定义链接点前和链接点后的操作)。
6、目标对象:利用反射原理和动态代理技术,生成的代理的目标对象。
7、织入(weave):将切面运用到目标对象并生成代理对象的过程。
8、引入(introduction)在不修改代码的前提下,为运行状态的类添加一些方法和字段。
三、AOP代理
Spring 提供了两种方式来生成代理对象: JDKProxy 和 Cglib,默认使用的是JDK动态代理技术。