Spring《八》AOP/代理类定义

Spring通知

Interception Around通知 MethodInterceptor类(方法执行前后通知)

Before通知 MethodBeforeAdvice类(方法执行前通知)

After Returning通知 AfterReturningAdvice类(方法执行后通知)

Throw通知 ThrowsAdvice类(方法执行抛出异常时通知)

Introduction通知 IntroductionAdvisor类和IntroductionInterceptor类(方法执行完通知)

具体事例:

LogAround implements MethodInterceptor

TimeBook implements TimeBookInterface

配置文档   Interception Around通知

 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>
View Code

测试代码:

TimeBookInterface timeBookProxy=(TimeBookInterface)actx.getBean("logProxy");

timeBookProxy.doAuditing("张三");

配置文档   Before通知

 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>
View Code

 配置文档   After Returning通知

 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>
View Code

配置定义同上述Before和After文档。

代理类定义:

原文地址:https://www.cnblogs.com/swordyt/p/7049347.html