加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

java-Spring @transactional与mode = aspectj行为异常

发布时间:2020-12-15 01:20:09 所属栏目:大数据 来源:网络整理
导读:几天来,我一直在尝试使Spring事务在我的应用程序中正常运行,现在我无处可寻,只能向社区寻求帮助.在此先感谢您的帮助. 我的应用程序有特定的要求,我需要使用@Transactional注释一个受保护的重写方法,并从抽象父类中调用此方法.根据我的阅读,我不能使用代理,而

几天来,我一直在尝试使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注释似乎并未在堆栈中传播.

我完全困惑.请帮忙!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读