• SpringMVC+Spring 事务无法回滚的问题


    问题描述:

    Controller里面执行Service的方法,Service方法抛出异常,但是没有按照事务配置的方式回滚;

    Service的事务配置没有问题;

    出现此问题的原因:

    在springmvc-servlet.xml配置文件中没有过滤掉@Service,正确配置如下:

    <!-- 自动扫描的包名 -->
     <context:component-scan base-package="com.yrcn.my">
      <context:include-filter type="annotation"
       expression="org.springframework.stereotype.Controller" />
      <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service" /> 
      <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Repository" /> 
     </context:component-scan>

    原因解析:

    org.springframework.web.context.ContextLoaderListener会加载项目中的@Service;

    如果你不在springmvc-servlet.xml过滤掉@Service,Spring容器中会有两套@Service bean;

    我们可以通过debug的方式打印,你会发现Controller里面的Service bean和我们通过BeanFactory获取的bean居然不是同一个。

    我们通过BeanFactory获取的Service Bean是可以正确回滚的。

    ----------- 编程改变命运,励志照亮人生。
  • 相关阅读:
    第三第四周的笔记
    第一二周的笔记
    jQuery的一些笔记
    函数的执行环境与调用对象
    从click事件理解DOM事件流
    慕课编程题JS选项卡切换
    adb(11)-重新挂载 system 分区为可写
    adb(10)-屏幕截图/录制
    adb(9)-查看设备信息
    adb(8)-查看日志
  • 原文地址:https://www.cnblogs.com/yrcn/p/4075563.html
Copyright © 2020-2023  润新知