springBoot shiro 中 realm中注入service 使得 service的事务失效,如何解决。
在shiro的userRealm中 注入service时,导致注入的service没有事务(不会创建代理对象)。
正常有事务的service 都应该是CGLI代理对象的。
应该怎么解决呢.
除了把 service改为dao,我需要事务
尝遍了网上所有方法,有的说spring-mvc.xml 和application-context..xml 扫描包原因, 有的说spring aop和事务先后顺序问题,还有aop 使用cglib 的问题,还有数据库表引擎的问题等等。。。。 还是一样,突然想到了再 单元测试环境下试试 事务效果,
一开始单元测试类配置如下
把之前事务不生效的service 加上,一运行,居然可以啦!
还是很疑惑,为什么web容器下就不行呢, 继续在网上找答案,也没找到相关的,
忽然想到web容器和junit 环境配置的不通,就把web容器改加载的配置文件一个个 加上再运行, 后来发现了再加上
classpath*:spring-mvc.xml
事务也可以生效, 排除这两个文件的问题, 最后找到 shiro的配置文件 加上去
发现事务又不行了, 这时喜出望外,确定都是 shiro惹的祸! 网上一查, 原来是自定义的ShiroDbRealm 里面注入的service 引起的
后来把 ShiroDbRealm里面注入 service改为注入dao,问题解决!
我也出现导致事务失效的问题,今天刚解决 使用@Lazy延迟加载。 具体原因好像是什么扫描问题吧。正在研究中