Could not obtain transaction-synchronized Session for current thread Shiro 引起的事务报错问题...

错误信息为 Could not obtain transaction-synchronized Session for current thread

我是从google搜索,百度搜索,才都试出来的,希望大家不要入坑啊,我刚爬出来,下班回家啊。

以下是解决方案:
按照这些方法,总有一款适合你的,童鞋们
第一种方法
Shiro 引起的事务报错问题
解决办法:
在MyRealm中做如下修改:(两种方式,任意一种即可 药到病除。)
在Shiro框架中注入Bean时,不使用@Autowire,使用ApplicationContextRegister.getBean()方法,手动注入bean。保证该方法只有在程序完全启动运行时,才被注入。
使用 @Autowire + @Lazy 注解,设置注入到Shiro框架的Bean延时加载(即在第一次使用的时候加载)。
建议使用第二种,直接就好。

第二种修改方法
这种方法可能不太管用,大家还可以使用
private Session getCurrentSession() {
Session session = this.sessionFactory.openSession();
return session;
}
改成openSession()就可以了

service实现类都要加上这个注解
@Transactional
@Service

然后applicationContext.xml文件中要修改成以下样子


image.png


    
        
        
        
        
        
        
        
        
        
        
        
        
        
    



    
    



 

还有pom.xml中要加入以下节点信息

aopalliance
aopalliance
1.0


org.springframework
spring-aop
4.3.20.RELEASE


cglib
cglib
3.2.0



org.aspectj
aspectjweaver
1.8.14

就完美解决了
postMan测试OK


image.png

你可能感兴趣的:(Could not obtain transaction-synchronized Session for current thread Shiro 引起的事务报错问题...)