目录
advance,通知,在Spring中叫增强也许更加合理。所谓增强,其实就是向各个程序内部注入一些代码从而增强原有程序的功能。
Spring使用增强类定义横切逻辑,同时由于Spring只支持方法连接点,增强还包括在方法的哪一点加入横切代码的方位信息,所以增强即包括横切逻辑,又包含部分连接点的信息。
按照增强在目标类方法连接点的位置可以将增强划分为以下五类:
增强名称 | 接口 | 描述 |
前置增强 | org.springframework.aop.BeforeAdvice 因为Spring只支持方法级的增强,所以MethodBeforeAdvance接口是目前可用的前置增强。 |
在目标方法执行前来实施增强 |
后置增强 | org.springframework.aop.AfterReturningAdvice | 在目标方法执行后来实施增强 |
环绕增强 | org.aopalliance.intercept.MethodInterceptor | 在目标方法执行前、后实施增强。环绕增强是AOP联盟定义的接口,其他四种增强接口则是Spring定义的接口。 |
异常抛出增强 | org.springframework.aop.ThrowsAdvice | 在目标方法抛出异常后来实施增强 |
引介增强 | org.springframework.aop.Introductioninterceptor | 表示在目标类中添加一些新的方法和属性。引介增强是一种特殊的增强。他可以在目标类中添加属性和方法,通过拦截定义一个接口,让目标代理实现这个接口。他的连接点是类级别的,而前面的几种则是方法级别的。 |
通过实现这些增强接口,在实现这些接口的方法当中定义横切逻辑,就可以将它们织入目标类方法的相应连接点位置。
一、前置增强
增强目标类
public class NativeWaiter {
public void greetTo(String name) {
System.out.println("greet to " + name + "...");
}
public void serveTo(String name) {
System.out.println("serving to " + name + "...");
}
}
增强类,实现