spring中联合使用声明事务代理和环绕通知

今天仔细想了想,终于找到解决方案了。
首先对BO进行声明性事务代理。
然后在配置环绕通知时将目标对象设为事务代理对象。
例如:
<bean id="bo" class="com.bo.BO">
<property name="dao" ref="dao"> </property>
</bean>

<bean id="proxyBo" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="target" ref="bo"> </property>
<property name="transactionManager" ref="htm"> </property>
<property name="transactionAttributes">
<props>
<prop key="*"> PROPAGATION_REQUIRED </prop>
</props>
</property>

</bean>

上面是给bo装备事务代理,target指明了目标对象是我1个id为bo的bean.

         <bean id="interceptor" class="com.util.MyBoLogger">
</bean>

<bean id="myadvisor" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
<property name="advice" ref="interceptor"> </property>
<property name="pattern" value="com.bo.BO.*"> </property>
</bean>
 
  <bean id="logProxy" class="org.springframework.aop.framework.ProxyFactoryBean">   
<property name="target" ref="proxyBo"> </property>   
<property name="interceptorNames">   
<list>   
<value> myadvisor </value>   
</list>   
</property>
<property name="proxyInterfaces">
<list>
<value> com.bo.BOIF </value>
</list>
</property>
</bean>
这是添加环绕通知,在 <bean id="logProxy" class="org.springframework.aop.framework.ProxyFactoryBean">  
中, <property name="target" ref="proxyBo"> </property>  目标对象是前面设置好的事务代理bean.
前提是要使用jdk的动态代理,不能用cglib,让BO类实现1个接口就可以了,我的接口是com.bo.BOIF,
需要用 <property name="proxyInterfaces"> 指明。

让需要注入bo这个bean的时候,
<bean name="/login" class="com.ness.struts.action.LoginAction">
<property name="bo" ref="logProxy"> </property>
</bean>

直接注入环绕通知bean.我的是logProxy。现在调用bo这个bean的时候就有了事务和环绕2种代理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值