zoukankan      html  css  js  c++  java
  • @Transactional 无效原因

    在controller 上面使用  @Transactional 注解时候发现数据没有回滚,在执行完update 更新语句,事务直接就commit 了,

    此时方法尚未执行结束,数据库数据已经更新了。

    第一反应应该是配置文件有问题,自己检查了spring.xml 和spring-mvc.xml文件,配置文件没什么问题。

    在pring.mvc中  <tx:annotation-driven transaction-manager="transactionManager" />  也是有的

    并且自动扫描了 service 层文件。百思不得其解

    网上查询资料:导致该注解无效的原理多种多样,没有一种和我的是一样的。

    有的说spring.xml和spring-mvc.xml 两个配置文件都对controller 或者 service 层进行了扫描,出现扫描重复,这种情况会导致

    @Transactional 注解无效,但我的不属于这种情况,

    还有的说,在同一个类中 ,一个没有配置@Transactiona 注解的方法,调用了令一个配置了@Transactiona 注解的方法,导致该注解无效。

    我的也不属于这种情况。

    还有的说,方法修饰符没有用public。。

    这些都会导致该注解无效,但是我的不属于这些情况。

    偶然尝试,在sevice 层接口实现类上面,配置了 @Transactional  debug 调试发现,数据回滚了,注解起作用了。

    原来这个注解需要用在service 接口实现类 impl 中。

    后来查资料:

    若要@Transactional  注解配置了controller 层,需要将开启事务注解方式的 方式即:<tx:annotation-driven transaction-manager="transactionManager" /> 增加在spring-mvc.xml中

    尝试了一下,有效。

    
    
  • 相关阅读:
    用硬件卡克隆Linux集群
    基于Linux系统WINE虚拟机技术的研究
    Rpm另类用法加固Linux安全
    基于TC技术的网络流量控制实战
    开源世界里的七剑
    借Stunnel工具保护E-mail服务器
    如何应对DDOS网络攻击(之二)
    如何应对DDOS网络攻击
    Leetcode-983 Minimum Cost For Tickets(最低票价)
    Leetcode-413 Arithmetic Slices(等差数列划分)
  • 原文地址:https://www.cnblogs.com/prettrywork/p/9969849.html
Copyright © 2011-2022 走看看