1. 横切关注点

  对哪些方法进行拦截,拦截后怎么处理,这些关注点称之为横切关注点。

2. 切面(aspect)-- 本质上仅仅是一个类

  类是对物体特征的抽象,切面就是对横切关注点的抽象。

3. 连接点(joinpoint)-- 要拦截的方法

  被拦截到的点,因为Spring只支持方法类型的连接点,所以在Spring中连接点指的就是被拦截到的方法,实际上连接点还可以是字段或者构造器。

4. 切入点(pointcut)-- 声明对哪些方法进行拦截

  对连接点进行拦截的定义。

5. 通知(advice)-- 拦截方法后要执行的代码

  所谓通知指的就是指拦截到连接点之后要执行的代码,通知分为前置、后置、异常、最终、环绕通知五类。

  • 前置通知:在连接点前面执行,前置通知不会影响连接点的执行,除非此处抛出异常。
  • 后置通知:在连接点正常执行完成后执行,如果连接点抛出异常,则不会执行。
  • 异常通知:在连接点抛出异常后执行。
  • 返回通知:在连接点执行完成后执行,不管是正常执行完成,还是抛出异常,都会执行返回通知中的内容。
  • 环绕通知:环绕通知围绕在连接点前后,比如一个方法调用的前后。这是最强大的通知类型,能在方法调用前后自定义一些操作。环绕通知还需要负责决定是继续处理join point(调用ProceedingJoinPoint的proceed方法)还是中断执行。

6. 目标对象

  代理的目标对象。

7. 织入(weave)

  将切面应用到目标对象并导致代理对象创建的过程。

8. 引入(introduction)

  在不修改代码的前提下,引入可以在运行期为类动态地添加一些方法或字段。

05-26 03:59