妙博客

主机评测 香港服务器 洛杉矶VPS测评

Spring MVC中定义了事务,但是不自动回滚解决办法,事务失效

有四种情况导致事务不生效

  1. mysql引擎有问题,请确保你的表是INNODB引擎。确保数据库支持事务

  2. @Transactional注解没有定义回滚异常,由于@Transactional的默认回滚异常是RuntimeException,所以需要手动指定一个回滚异常,如下:


    @Transactional(rollbackFor = Exception.class)


    image.png

  3. 最常见的问题,配置问题,重复扫描Service包,导致事务失效。

    web.xml配置如下

    image.png

    spring.xml配置如下,记得去掉Controller层

    image.png

    dipatch-servlet.xml配置如下,只需要扫描controller包

    image.png

  4. 最后一种是新手不理解回滚的机制,service层需要向外抛出异常。如果把整个service方法用try,catch包住了,事务管理器自然不会拦截。

Copyright Your 142132.com Rights Reserved. 赣ICP备17010829号-2