spring中联合使用声明事务代理和环绕通知
2016-07-29 00:00
579 查看
今天仔细想了想,终于找到解决方案了。
首先对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种代理。
首先对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种代理。
相关文章推荐
- Spring强制使用CGLIB代理事务
- 8.5.2: Spring的事务---使用TransactionProxyFactoryBean创建事务代理
- Spring在使用后置通知与环绕通知时遇到的问题
- 被事务代理的spring service 不能使用注解方式发布dubbo服务
- (MySQL)Spring3+Mybatis3使用注解式事务声明(@Transactional)无法回滚
- Spring事务——使用TransactionProxyFactoryBean创建事务代理
- 被事务代理的spring service 使用注解方式发布Dubbo服务
- spring声明事务、annotation事务同时使用注意
- [spring,mysql] spring使用注解式事务声明(@Transactional)无法回滚 .
- 使用spring通知时,代理出错
- 使用Spring AOP 自动代理配置声明式事务
- SSH与SSM学习之Spring13——动态代理之通知的使用
- 使用spring的代理事务时报java.lang.NoSuchMethodError: org.springframework.beans.MutablePropertyValues.add错误
- JDK动态代理干了什么事情?为什么我的事务会不起效?spring的事务到底应该怎么使用?原理是什么?
- Spring强制使用CGLIB代理事务
- 被事务代理的spring service 不能使用注解方式发布dubbo服务
- Spring强制使用CGLIB代理事务
- Spring AOP 通过@Aspect的方式使用环绕通知 Around Advice
- spring 声明试事务代理
- Spring -- aop(面向切面编程),前置&后置&环绕&抛异常通知,引入通知,自动代理