废话不多说了,直接说情况,接手新的项目,框架是spring+springmvc+mybatis,在service层事务处理时,事务不回滚,看了下配置文件,发现了问题,所以再此说一下,配置事务需要注意的几个问题
1.web.xml中将spring的配置文件配置到容器中如下:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-mybatis.xml</param-value>
</context-param>
这是配置的父容器
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
<async-supported>true</async-supported>
这是配置sringmvc是加入的配置文件,也是spring的子容器
所以在配置springmvc的controller注解扫描包时,一定要注意不能包含service层或者dao层的包
<context:component-scan base-package="com.xxx.controller">
如果这边base-package设置的包含了service层,则在service层的注解将不会起作用
原因就是:父容器是不可以访问子容器中的内容,子容器可以访问父容器中的内容
2.在service层的需要处理事务的方法中,如果调用其它方法(比如调用了A方法),那么A方法也需要抛出异常,如果A方法不抛异常,则再A方法中报错的话,事务将不会回滚
3.至于怎么配置事务这个我就不多说了,谷歌一下。。。。。