Spring通知
Interception Around通知 MethodInterceptor类(方法执行前后通知)
Before通知 MethodBeforeAdvice类(方法执行前通知)
After Returning通知 AfterReturningAdvice类(方法执行后通知)
Throw通知 ThrowsAdvice类(方法执行抛出异常时通知)
Introduction通知 IntroductionAdvisor类和IntroductionInterceptor类(方法执行完通知)
具体事例:
LogAround implements MethodInterceptor
TimeBook implements TimeBookInterface
配置文档 Interception Around通知
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 <!--以下是使用Spring AOP实现日志--> 2 <bean id="log" class="com.gc.antion.LogAround"/> 3 <bean id="timeBook" class="com.gc.action.TimeBook"/> 4 <bean id="logProxy" class="org.springframework.aop.framework.ProxyFactoryBean"> 5 <property name="proxyInterfaces"> 6 <value>com.gc.impl.TimeBookInterface</value> 7 </property> 8 <!--指定要代理的类--> 9 <property name="interceptorNames"> 10 <list> 11 <value>log</value> 12 <list> 13 </property> 14 </bean>
测试代码:
TimeBookInterface timeBookProxy=(TimeBookInterface)actx.getBean("logProxy");
timeBookProxy.doAuditing("张三");
配置文档 Before通知
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 <bean id="logBefore" class="com.gc.antion.LogBefore" /> 2 <bean id="logBeforeAdvisor" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor"> 3 <property name="advice"> //指定代理类 4 <ref bean="logBefore"> 5 </property> 6 <property name="patterns">//指定需要代理方法 7 <value>.*doAuditing.*</value> 8 </property> 9 </bean> 10 <bean id="logProxy" class="org.springframework.aop.framework.ProxyFactoryBean"> 11 <property name="proxyInterfaces"> 12 <value>com.gc.impl.TimeBookInterface</value> 13 </property> 14 <property name="target"> 15 <ref bean="timeBook"> 16 </property> 17 <property> 18 <list> 19 <value>logBeforeAdvisor</value> 20 </list> 21 </property> 22 </bean>
配置文档 After Returning通知
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 <bean id="logAfter" class="com.gc.action.LogAfter"> 2 <bean id="logAfterAdvisor" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor"> 3 <property name="advice"> 4 <ref bean="logAfter/> 5 </property> 6 <property name="patterns"> 7 <value>.*doAuditing.*</value> 8 </property> 9 </bean> 10 <bean id="logProxy" class="org.springframework.aop.framework.ProxyFactoryBean"> 11 <property name="proxyInterfaces"> 12 <value>com.gc.impl.TimeBookInterface</value> 13 </property> 14 <property name="target"> 15 <ref bean="timeBook"> 16 </property> 17 <!--指定代理类--> 18 <property name="interceptorNames"> 19 <list> 20 <value>logAfterAdvisor</value> 21 </list> 22 </property> 23 </bean>
配置定义同上述Before和After文档。
代理类定义: