本文主要是介绍SpingBoot集成shiro,MyRealm中无法@Autowired注入Service的问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
网上说了很多诸如是Spring加载顺序,shiroFilter在Spring自动装配bean之前的问题,其实也有可能忽略如下低级错误。
在ShiroConfiguration中要使用@Bean在ApplicationContext注入MyRealm,不能直接new对象。
道理和Controller中调用Service一样,都要是SpringBean,不能自己new。
错误方式:
@Bean(name = "securityManager")
public SecurityManager securityManager() {DefaultWebSecurityManager manager = new DefaultWebSecurityManager();MyRealm myRealm = new MyRealm();manager.setRealm(myRealm);return manager;}
正确方式:
@Bean(name = "myRealm")
public MyRealm myAuthRealm() {MyRealm myRealm = new MyRealm();return myRealm;}@Bean(name = "securityManager")
public SecurityManager securityManager(@Qualifier("myRealm")MyRealm myRealm) {DefaultWebSecurityManager manager = new DefaultWebSecurityManager();manager.setRealm(myRealm);return manager;}
这篇关于SpingBoot集成shiro,MyRealm中无法@Autowired注入Service的问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!