spring+shrio 用户表事务不起作用问题

首先说一下,druid数据源真是非常强大,可以配置sql监控,如果不是它,我还不能发现有些对数据库操作没有走事务问题.

大家看下问题

spring+shrio 用户表事务不起作用问题

很明显, 有三条sql是没有走事务的, 检查发现这三条都是在shiro Reaml中的sql, 

spring+shrio 用户表事务不起作用问题

检查发现, shiro 加载比较早, Reaml中配置的service加载完成后才会加载spring的bean, 事务注解等, 所以此service是配置事务注解是不起作用的,

解决方案: 

 1, Reaml中不配置service, 配置dao, 但问题不能完美解决, 还是有部分sql不走事务.

2, 使用懒加载方式, @Lazy注解, 在第一次使用时加载, 可以完美解决.

spring+shrio 用户表事务不起作用问题

在看下sql监控,

spring+shrio 用户表事务不起作用问题


全部都走了事务.