实现MethodInterceptor 接口,在调用目标对象的方法时,就可以实现在调用方法之前、调用方法过程中、调用方法之后对其进行控制。

MethodInterceptor 接口可以实现MethodBeforeAdvice接口、AfterReturningAdvice接口、ThrowsAdvice接口这三个接口能够所能够实现的功能,但是应该谨慎使用MethodInterceptor 接口,很可能因为一时的疏忽忘记最重要的MethodInvocation而造成对目标对象方法调用失效,或者不能达到预期的设想。

关于含有Advice的三种对目标对象的方法的增强,可以参考文章在Spring的IOC容器中装配AOP代理

在Spring的IOC容器中装配AOP代理 的基础上,比较MethodInterceptor 接口的实现与上面提及到的三种接口实现对目标对象方法的增强的功能效果。



使用Spring的Bean装配AOP,对于MethodBeforeAdvice接口、AfterReturningAdvice接口、ThrowsAdvice接口这三个接口在XML配置文件中配置的顺序对调用目标对象的方法没有关系。

但是如果在使用上述的基础上又使用了MethodInterceptor ,如果MethodInterceptor 配置顺序不同,就可能将对目标对象方法的调用进行拦截,使得我们预期设想的使用AfterReturningAdvice对方法调用之后增强失效。

因此,如果两类Advice同时使用,在装配的时候,在XML配置文件中,将MethodInterceptor 的配置放在其他三种Advice的后面,使得前三种Advice先起作用,最后使用MethodInterceptor 进行拦截。