• @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中

    尝试了一下,有效。

    
    
  • 相关阅读:
    新的开始!
    find命令之mtime
    glances服务器监控工具
    centos7最小化安装改为图形界面
    ansible笔记(3)-文件操作模块(上)
    php-fpm参数详解
    ansible笔记(2)-模块简介
    centos创建交换分区
    等保测评三级整改-身份鉴别
    vsftp安装配置
  • 原文地址:https://www.cnblogs.com/prettrywork/p/9969849.html
Copyright © 2020-2023  润新知