aop:面向切面编程
常用术语:
通知(advice)
切点(pointcut)
连接点(join point)
通知(advice):
在aop术语中,切面的工作被称为通知。
Spring切面可以应用的5种类型的通知:
- 前置通知(before):在目标方法调用前调用通知功能
- 后置通知(after):在目标方法调用之后调用通知,此时不关心方法的输出是什么
- 返回通知(after-returning)在目标方法执行之后调用通知
- 异常通知(after-throwing)在目标方法抛出异常后调用通知
- 环绕通知(around)通知包裹了被通知的方法,在被通知的方法调用之前和调用之后执行自定义的行为
连接点(join point):
程序应用中可能有数以千计的时机应用通知,这些时机被称为连接点,连接点是在应用执行过程中能插入切面的一个点,这些点可以是“任意行为(调用方法、抛出异常、修改一个字段...)”,切面代码可以利用这些点插入到应用的正常流程之中,并添加新的行为。
切点(pointcut):
一个切面并不需要通知应用的所有连接点,切点有助于缩小切面所通知的连接点的范围。
如果说通知是定义了切面的“何时”,那么,切点就定义了切面的“何处”。
切点的定义会匹配通知所要织入的一个或多个连接点。
切面(aspect):
切面是通知和切点的集合,通知和切点共同定义了切面的全部内容——它是什么,他在何时何处完成其功能(和切点描述内容相符合)。
小结:
通知时包含了需要用于多个应用对象的横切行为;连接点是程序执行过程中能够应用通知的所有点;切点定义了通知被应用的具体位置(在哪些连接点)。
其中关键的概念是切点定义了哪些链接点会得到通知。