在dispatcher-servlet.xml中,扫描Controller的时候,也扫描了Service,因此当抛出异常时,事务不能回滚,原始代码如下
mvc-dispatcher-servlet.xml文件
<!-- 自动扫描controller包下的所有类,使其认为spring mvc的控制器 -->
<context:component-scan base-package="com.bigmouth.crm.controller" />
<context:component-scan base-package="com.bigmouth.crm.service..*" />
整改后代码
mvc-dispatcher-servlet.xml文件:
<!-- 自动扫描controller包下的所有类,使其认为spring mvc的控制器 -->
<context:component-scan base-package="com.bigmouth.crm.controller" />
<!-- 不扫描业务组件,放在applicationContext.xml中扫描,防止事务回滚失败 -->
<!-- <context:component-scan base-package="com.bigmouth.crm.service..*" /> -->
这里将Service的扫描在mvc-dispatcher-servlet.xml文件中注释掉了,放到Spring的Context文件中,如下
applicationContext.xml文件:
<context:component-scan base-package="com.bigmouth.crm.service..*" />