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注释似乎并未在堆栈中传播.

我完全困惑.请帮忙!

相关文章

Spring Cloud为Spring Boot应用程序提供Netflix OSS集成。 提供的功能模块包括服务发现(Eureka),断路...
Spring Cloud 学习笔记;maven配置;入门学习;基于Spring Boot 实现;服务端配置,客户端配置;
可以毫不夸张地说,这篇文章介绍的 Spring/SpringBoot 常用注解基本已经涵盖你工作中遇到的大部分常用的...
Spring中各种方式进行日期时间处理,有作用于单个实体的,也有作用于全局的,有作用于请求入参的,有作...
跨域资源共享(Cross-origin resource sharing)(CORS)是W3C的标准,大部分的浏览器都实现了这个标准...
Spring Boot使创建基于Spring的应用程序变得轻松,大部分的SpringBoot应用程序都只需要很少的Spring配置...