另外testBo在另外的xml文件里声明了:<bean id="testBo" class="com.xy.bo.TestBo">
<property name="testDao"><ref bean="testDao"/></property>
<!-- <property name="transactionManager"><ref bean="transactionManager"/></property> -->
</bean>
<property name="testDao"><ref bean="testDao"/></property>
<!-- <property name="transactionManager"><ref bean="transactionManager"/></property> -->
</bean>
解决方案 »
- 数据库表的关联设置和hibernate里设置关联是不是都要进行?
- struts-config.xml 必须放在 WEB-INF下吗,放在src目录下怎么读取
- Spring 声明式事务代理的问题
- tomcat中客户端登录的时候如何从http转到https, 登录成功后再转到http?
- WebSphere 客户认证问题
- xfire框架生成的webservice服务端被调用时报错,请高手帮忙看一下
- 有谁改造过shark开源工作流引擎吗?30万行代码,如何着手呢.
- java有没有类似javascript的eval功能的函数?
- 请教一个EJB问题,在线等待
- 这是个配置环境的问题,期待哪位哥们指导一下,很烦拉。。。。
- 90分,hibernate映射问题!顶都有分!解决马上结贴!!!急
- 烦,spring声明事务不成功~
<property name="target">
<ref bean="testBo" />
</property>你可以参考一下我的:
<property name="target">
<bean class="com.wehave.hyerp.procurement.service.CgsqdService">
<property name="cgsqdDao">
<ref bean="CgsqdDao"/>
</property>
</bean>
</property>
我刚按照你的方法试了,还是没有用。
原因是,你在controller中,调用testBo的时候,用的不是TransactionProxyFactoryBean包装过的,你要生效事务,要调用testBoProxy,他会给你一个经过事务包装过的testBo事例。
另外testBoProxy要设置成以下的方式:
<bean id="testBoProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager">
<ref bean="transactionManager" />
</property>
<property name="proxyTargetClass"><value>true</value></property>
<property name="target">
<ref bean="testBo" />
</property>
<property name="transactionAttributes">
<props>
<prop key="test*">PROPAGATION_REQUIRED</prop>
<prop key="qurey*">PROPAGATION_REQUIRED,readOnly</prop>
</props>
</property>
</bean>
原来的代码:
<bean name="/test" class="com.xy.action.TestAction">
<property name="testBo"><ref bean="testBo"/></property>
</bean>
现在的代码:
<bean name="/test" class="com.xy.action.TestAction">
<property name="testBo"><ref bean="testBoProxy"/></property>
</bean>
把testBo改成testBoProxy就可以了,多谢多谢!