zoukankan      html  css  js  c++  java
  • spring + myBatis 常见错误:注解事务不回滚

    最近项目在用springMVC+spring+myBatis框架,在配置事务的时候发现一个事务不能回滚的问题。

    刚开始配置如下:springMVC.xml配置内容:

    spring.xml配置内容

    从上面两个配置文件看出,开始的时候我把Service配置在springMVC中的。但是,事务注解我配置在了spring中。这样就会出现问题了。因为spring的容器(applicationContext)和springMVC的(applicationContext)是不同的。

    spring容器加载得时候,优先加载ServletContextListener(对应spring.xml)产生的父容器,而springMVC(对应springMVC.xml)产生的是子容器。子容器Controller进行扫描装配时装配的@Service注解的实例是没有经过事务加强处理,

    即没有事务处理能力的Service。而父容器进行初始化的Service是保证事务的增强处理能力的。如果不在子容器中将Service除去掉,此时得到的将是原样的无事务处理能力的Service。

    所以,我们应把扫描Service的工作放在spring.xml中。让Service和事务注解存在于同一个容器中,这样配置的事务注解就能起作用了。也就是说把<context:component-scan base-package="com.services" />这个配置从

    springMVC.xml中移到spring.xml的配置中。事务不回滚的问题就能解决了。

  • 相关阅读:
    2019JAVA第三次实验报告
    第二次作业
    第一周作业
    2019年春总结
    第二周作业
    第十二周作业
    第十一周作业
    第十周作业
    第九周作业
    第八周作业
  • 原文地址:https://www.cnblogs.com/michaelShao/p/5425027.html
Copyright © 2011-2022 走看看