Spring AOP中的 ‘通知’
来张图简单理解一下代理
一个环绕通知,jdk里的
Spring支持六中通知
通知名称 | 接口 | 描述 |
---|---|---|
前置通知 |
org.springframework.aop. MethodBeforeAdvice |
通过前置通知,可以在连接点执行之前做自定义处理。虽然可以完全访问调用的目标和方法参数,但控制不了方法的执行。可以抛出异常终止执行; |
后置返回通知 |
org.springframework.aop. AfterReturningAdvice |
调用方法执行完毕并返回值后执行该通知,后置返回通知可以访问调用目标、方法参数、返回值。无法控制方法的调用。目标方法抛出异常,将直接传回堆栈,不执行后置返回通知;(毕竟是跟返回值有关的吗!!) |
后置通知 |
org.springframework.aop. AfterAdvice |
后置通知和后置返回通知类似; 不同的地方: 后置返回通知不关心返回值; 即使目标方法抛出异常后置通知照常执行;(很是霸道啊!)
|
环绕通知 |
org.springframework.aop. MethodInterceptor |
spring的环绕通知使用AOP Alliance标准建模。环绕通知在调用方法前后都可以执行,可以控制方法调用点(可以绕过方法); |
异常通知 |
org.springframework.aop. ThrowsAdvice |
异常通知只有在方法调用抛出异常后执行。只捕获特定异常,在实现ThrowsAdvice接口中定义名为afterThrowing方法接收抛出异常,该方法需用public修饰; void afterThrowing([Method, args, target], ThrowableSubclass); 该方法前3个参数可选; |
引入通知 |
org.springframework.aop. IntroductionInterceptor |
spring引入建模为特殊类型的拦截器。通过使用引入拦截器,可以指定由引入通知引入的方法的实现; |