BigHanson 2018-05-18 09:11 采纳率: 40%
浏览 2663
已结题

springBoot shiro 中 realm中注入service 使事务失效问题。

springBoot shiro 中 realm中注入service 使得 service的事务失效,如何解决。

在shiro的userRealm中 注入service时,导致注入的service没有事务(不会创建代理对象)。
图片说明

图片说明

正常有事务的service 都应该是CGLI代理对象的。

应该怎么解决呢.

除了把 service改为dao,我需要事务

  • 写回答

2条回答 默认 最新

  • 李逍遥的代码 2018-05-18 09:40
    关注

    尝遍了网上所有方法,有的说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,问题解决!

    评论

报告相同问题?

悬赏问题

  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大