Spring AOP方法拦截器与方法建议



我是AOP的新手,我正在努力理解Method Interceptor和MethodAdvice(即MethodBeforeAdvice或MethodAfterAdvice)之间的区别。在我看来,两者都在做同样的事情,即在方法调用时被调用。我们应该在什么时候使用MethodInterceptor与MethodAdvice。

查看org.opalliance.interceptInterceptor接口(由MethodInterceptor实现)的定义:

public interface Interceptor extends Advice {
}

很容易看出MethodInterceptor实际上就是一个建议。在@Aspect类中定义的Advice和这样的Interceptor之间的唯一区别是,Interceptor实现可以在运行时添加到Spring AOP代理中或从中删除(将它们强制转换为"Advised"),而您所说的Advice是一个更静态的构造。但它们对SpringAOP仍然至关重要,因为它们的存在告诉Spring在应用程序上下文启动期间将哪些bean包装在代理对象中。

最新更新