AspectJ来做。
AspectJ是什么东西?没用过。。。
前置通知
接口:org.springframework.aop.MethodBeforeAdvice
说明:使用前置通知可以在连接点执行前进行自定义的操作。
不过,Spring里只有一种连接点,即方法调用,所以前置通知事实上就是让你能在方法调用前进行一些操作。前置通知可以访问调用的目标方法,也可以对该方法的参数进行操作,不过它不能影响方法调用本身。
后置通知
接口:org.springframework.aop.AfterReturningAdvice
说明:
后置通知中不能修改方法返回值,虽然不能修改返回值,但我们可以抛出一个异常,这样调用方法就只能看到这个异常而不是返回值了。(对于返回值不正确的情况下)
包围通知
接口:org.springframework.aop.MethodInterceptor
说明:Spring中的包围通知根据AOP联盟的方法拦截器标准建模。包围通知可以在目标方法之前和之后运行,我们也可以定义在什么时候调用目标方法。如果需要,我们也可以另写自己的逻辑而完全不调用目标方法。
包围通知可以修改方法的返回值
抛出通知
接口:org.springframework.aop.ThrowsAdvice
说明:抛出通知仅当方法调用抛出一个异常的时候才被调用,它在目标方法调用返回时才被执行。抛出通知可以只捕获特定的异常,我们可以访问抛出异常的方法,传入调用的参数以及调用的目标方法。
引入
接口:org.springframework.aop.IntroductionInterceptor
说明:Spring将引入看成一个特殊的拦截器。
使用引入拦截器,我们可以定义通知引入的方法的实现。