<?
xml version="1.0" encoding="UTF-8"
?>
< beans
xmlns ="http://www.springframework.org/schema/beans"
xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation ="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd" >
<!-- ㈠具体bean的定义 -->
< bean id ="bankref" class ="aop.advice.Bank" ></ bean >
<!-- ㈡advice 的定义 -->
< bean id ="before" class ="aop.advice.Before" ></ bean >
< bean id ="after" class ="aop.advice.After" ></ bean >
< bean id ="arround" class ="aop.advice.Arround" ></ bean >
<!-- ㈢
=================================================================================================
pointcut 的定义,分两种:
<bean id="transacpiontcut" class="aop.pointcut.TransactionPointCut"></bean>
用spring定义好的NameMatchMethodPointcut
<bean id="transacpiontcut" class="org.springframework.aop.support.NameMatchMethodPointcut">
<property name="mappedNames">
<list>
<value>find</value>
<value>transfer</value>
</list>
</property>
</bean>
=================================================================================================
-->
<!-- ㈣
<bean id="tAdvisor" class="org.springframework.aop.support.DefaultPointcutAdvisor">
<property name="pointcut">
<ref bean="transacpiontcut"/>
</property>
<property name="advice">
<ref bean="arround"/>
</property>
</bean>
-->
<!-- ㈤ -->
< bean id ="tAdvisor" class ="org.springframework.aop.support.NameMatchMethodPointcutAdvisor" >
< property name ="advice" >
< ref bean ="arround" />
</ property >
< property name ="mappedNames" >
< list >
< value > find </ value >
</ list >
</ property >
</ bean >
<!-- ㈥ 自动advisor代理,省略proxyfactorybean,简洁清晰
=================================================================================================
-->
< bean id ="autoadvisor"
class ="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator" ></ bean >
<!-- ㈦ 下面为自动代理bean工厂,通过属性beanNames属性进行beanname的匹配,
与上面的DefaultAdvisorAutoProxyCreator选一个使用就行,都是自动匹配,还是上面的简洁美观。
=================================================================================================
id="bank" 可省略
<bean id="bank"
class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
<property name="beanNames">
<list>
<value>bankref</value>
</list>
</property>
<property name="interceptorNames">
<list>
<value>tAdvisor</value>
</list>
</property>
</bean>
-->
<!-- ㈧单个bean的工厂,效率问题一般不用
=================================================================================================
<bean id="bank"
class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="target">
<ref bean="bank"/>
</property>
<property name="proxyInterfaces">
<list>
<value>aop.advice.Bankif</value>
</list>
</property>
<property name="interceptorNames">
<list>
<value>before</value>
<value>after</value>
<value>arround</value>
</list>
</property>
</bean>
-->
</ beans >
< beans
xmlns ="http://www.springframework.org/schema/beans"
xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation ="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd" >
<!-- ㈠具体bean的定义 -->
< bean id ="bankref" class ="aop.advice.Bank" ></ bean >
<!-- ㈡advice 的定义 -->
< bean id ="before" class ="aop.advice.Before" ></ bean >
< bean id ="after" class ="aop.advice.After" ></ bean >
< bean id ="arround" class ="aop.advice.Arround" ></ bean >
<!-- ㈢
=================================================================================================
pointcut 的定义,分两种:
<bean id="transacpiontcut" class="aop.pointcut.TransactionPointCut"></bean>
用spring定义好的NameMatchMethodPointcut
<bean id="transacpiontcut" class="org.springframework.aop.support.NameMatchMethodPointcut">
<property name="mappedNames">
<list>
<value>find</value>
<value>transfer</value>
</list>
</property>
</bean>
=================================================================================================
-->
<!-- ㈣
<bean id="tAdvisor" class="org.springframework.aop.support.DefaultPointcutAdvisor">
<property name="pointcut">
<ref bean="transacpiontcut"/>
</property>
<property name="advice">
<ref bean="arround"/>
</property>
</bean>
-->
<!-- ㈤ -->
< bean id ="tAdvisor" class ="org.springframework.aop.support.NameMatchMethodPointcutAdvisor" >
< property name ="advice" >
< ref bean ="arround" />
</ property >
< property name ="mappedNames" >
< list >
< value > find </ value >
</ list >
</ property >
</ bean >
<!-- ㈥ 自动advisor代理,省略proxyfactorybean,简洁清晰
=================================================================================================
-->
< bean id ="autoadvisor"
class ="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator" ></ bean >
<!-- ㈦ 下面为自动代理bean工厂,通过属性beanNames属性进行beanname的匹配,
与上面的DefaultAdvisorAutoProxyCreator选一个使用就行,都是自动匹配,还是上面的简洁美观。
=================================================================================================
id="bank" 可省略
<bean id="bank"
class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
<property name="beanNames">
<list>
<value>bankref</value>
</list>
</property>
<property name="interceptorNames">
<list>
<value>tAdvisor</value>
</list>
</property>
</bean>
-->
<!-- ㈧单个bean的工厂,效率问题一般不用
=================================================================================================
<bean id="bank"
class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="target">
<ref bean="bank"/>
</property>
<property name="proxyInterfaces">
<list>
<value>aop.advice.Bankif</value>
</list>
</property>
<property name="interceptorNames">
<list>
<value>before</value>
<value>after</value>
<value>arround</value>
</list>
</property>
</bean>
-->
</ beans >