前言
- 整合有緩存、事務的spring boot項目一切正常。
- 在該項目上整合shiro安全框架,發現部分類的緩存Cache不能正常使用。
- 然後發現該類的註解基本失效,包括事務Transaction註解。事務不能正常運行。
分析
- 註解失效的類,都是在shiro框架中(UserRealm)使用過@Autowire注入的類。
- 基本確定是shiro框架與spring框架的BeanFactory有所衝突,導致注入shiro框架的類不能被spring正確初始化。
以上參考
https://blog.csdn.net/elonpage/article/details/78965176
我的解決方法
1.比如使用Shiro時我們自定義了Realm,並在其中使用了
@Autowired
private UserService userService;
2.現在修改爲
@Autowired
@Lazy
private UserService userService;
即可,還有方法,比如ApplicationContextRegister.getBean()手動注入Bean。