spring事务管理,循环插入数据中间一条出错实现回滚。

  •   使用的是 aop 声明式事务。 但是 循环插入写在 Controller 层中所以一直不能回滚,Controller 层的扫描在 springmvc 的配置文件中使用 
1 // 扫描包下的除了 @Controller  注册到 spring    spring的配置      事务的配置都是在spring的配置文件中的。
2 <context:component-scan base-package="包名">
   3 <context:exclude-filter type="annotation" 4 expression="org.springframework.stereotype.Controller" /> // exclude-filter 过滤掉不扫描的注解 与之对应的是 include-filter 5 </context:component-scan> 6 7 8 // 使用 @RequestMapping 注解是必须开启 annotation-driven 该注解要和扫描controller的注解一起放在spring主配置文件。 9 <mvc:annotation-driven />
  •   Controller 层的扫描是在 springmvc 的配置文件中实现的。 springmvc 也有一个属于自己的子容器,相当于被 spring 容器包裹。 所以这种情况下 在 Controller 中使用 @transactional 会失效,配置切点也会失效。
  •   好的解决方法是将事务在 Service 层进行管理。  有时候 try-catch 捕获了事务异常,如果没有 抛出一个 RuntimeException 也不会进行回滚。
posted @ 2019-04-11 19:57  不要西红柿  阅读(4464)  评论(0编辑  收藏  举报