Spring   发布时间:2022-04-09  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了java-Spring @transactional与mode = aspectj行为异常 大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

几天来,我一直在尝试使Spring事务在我的应用程序中正常运行,现在我无处可寻,只能向社区寻求帮助.在此先感谢您的帮助.

我的应用程序有特定的要求,我需要使用@Transactional注释一个受保护的重写方法,并从抽象父类调用方法.根据我的阅读,我不能使用代理,而必须使用mode = aspectj.

首先,一些配置:

<bean id="transactionManager"
    class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource" />
</bean>

<tx:annotation-driven transaction-manager="transactionManager"
    proxy-target-class="false" mode="aspectj" />

<context:load-time-weaver />

<bean name="ID_DataAccessor" class="dal.DataAccessor">
    <constructor-arg ref="dataSource" />
</bean>

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
    destroy-method="close">
    <property name="driverClassName" value="com.MysqL.jdbc.Driver" />
    <property name="url" value="jdbc:MysqL://localhost" />
           .....
    <property name="defaultAutoCommit" value="true" />
</bean>

如果在ID_DataAccessor中的方法上使用@Transactional批注,则该连接是事务性的(DataSourceUtils.isConnectionTransactional(c,dataSource)== true).不过,这对我来说毫无用处,因为一旦方法完成,事务就会提交.当我在调用DataAccessor中的方法方法上使用@Trasnactional时,在DataAccessor中获得的连接(从DataSourceUtils.getConnection(dataSource))不是事务性的.此外,我在DataSourceTransactionManager.doGetTransaction()中放置了一个断点,只有在@Transactional批注直接位于获取连接的方法上时,才调用该断点.原谅我超载了该术语,但是@Transactional注释似乎并未在堆栈中传播.

我完全困惑.请帮忙!

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

大佬总结

以上是大佬教程为你收集整理的java-Spring @transactional与mode = aspectj行为异常 全部内容,希望文章能够帮你解决java-Spring @transactional与mode = aspectj行为异常 所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: