情况1:
在声明式事务和注解事务并存的情况下会出现注解事务失效的问题
处理方法如下:
方法1:
<aop:config>
<aop:pointcut id="transactionOperation"
expression="execution(* com.comtop..*.facade.*.*(..))" />
<aop:advisor advice-ref="txAdvice" pointcut-ref="transactionOperation" order="1"/>
</aop:config>
在配置中加上参数order="1" 设置时序 order越小 顺序越靠前
方法2:
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="get*" read-only="true"/>
<tx:method name="query*" read-only="true"/>
<tx:method name="*NoJTA" read-only="true"/>
<tx:method name="*" />
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut id="transactionOperation"
expression="execution(* com.comtop..*.facade.*.*(..))" />
<aop:advisor advice-ref="txAdvice" pointcut-ref="transactionOperation" order="1"/>
</aop:config>
<tx:annotation-driven proxy-target-class="true" transaction-manager="transactionManager" />
将<tx:annotation-driven proxy-target-class="true" transaction-manager="transactionManager" />放在<aop:config>和<tx:advice>后面
情况2:
实例化@Controller类时,Spring会自动把关联的@Service(此@Service已做了@Transaction事务注解)类实例化,此时事务并未生效,导致@Transaction注解无效,事务未被注册
解决方法:
<context:component-scan base-package="com.comtop" use-default-filters="false" >
<context:include-filter expression="org.springframework.stereotype.Controller" type="annotation"/>
</context:component-scan>
<context:component-scan base-package="com.comtop">
<context:exclude-filter expression="org.springframework.stereotype.Controller" type="annotation"/>
</context:component-scan>
use-default-filters="false" 的意思是不实例化关联到的servcie context:include和context:exclude分别是包含和屏蔽
分享到:
相关推荐
Spring声明式事务管理失效的原因,这里面是日常工作中踩过的坑,事务失效所产生的影响比较隐蔽,测试时易忽略,大多是在线上暴露,这可能是对Spring管理下的信任吧
Spring事务失效Spring事务失效
声明式事务管理也有两种常用的方式,一种是基于tx和aop名字空间的xml配置文件,另一种就是基于@Transactional注解。显然基于注解的方式更简单易用,更清爽。spring注解事务实现demo
spring 事务基于注解模式
spring boot 纯注解方法事务控制回滚,注解+简单配置文件使用多线程demo
spring使用注解进行事物管理例子,里面有说明.
Spring Hibernate 事务处理 详细说明 Spring Hibernate 事务处理 详细说明
SpringJDBC注解事务.zip,SpringJDBC注解事务.zip
Spring 与 各框架的组各下来,版本就特别的多,针对简单的 使用注解来管理事务的,研究了两天,要不网上写的不清楚,要不版本都很旧了,所以就是不回滚,Spring 的配置太灵活了,在加上新手,根本就不可能明白Spring...
这是在java里使用到spring的配置文件里,添加事务处理过程,以至于可以回滚事务,当中使用到拦截器。
spring学习事务源码spring学习事务源码spring学习事务源码spring学习事务源码spring学习事务源码spring学习事务源码spring学习事务源码spring学习事务源码
Spring注解
spring声明式事务处理demo。myeclipse工程
aop与spring事务处理
Java高级编程 实验报告 spring 声明事务 实验目的 掌握spring 声明式事务管理配置 实验环境 本实验采用本实验采用的eclipse或者 Myeclpse开发工具。Spring 4.0以上 Jdk1.7以上、oracle/mysql。
spring声明事务的配置 spring声明事务的配置 spring声明事务的配置
Spring中事务的传播属性详解,Spring中事务的传播属性详解
一个完整的s2sm整合项目,含jar包。使用注释型事务管理。给大家参考了。
Spring源代码解析(六):Spring声明式事务处理.doc
NULL 博文链接:https://todd-liangt.iteye.com/blog/337274