我是靠谱客的博主 高高摩托,最近开发中收集的这篇文章主要介绍spring boot集成shiro,使用java annotation配置而不是xml配置的经验,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
主要麻烦在于LifecycleBeanPostProcessor和AuthorizationAttributeSourceAdvisor的配置。
LifecycleBeanPostProcessor可以配成static的,但AuthorizationAttributeSourceAdvisor依赖securityManager,所以就不太方便配成static的了。
因为securityManager会依赖realm,而realm往往需要依赖dataSource这样的bean,比如JdbcRealm。但AuthorizationAttributeSourceAdvisor在注入的时候,dataSource还没有被注入进来,这时用@Autowired DataSource dataSource,注入的会是个null。
那么怎么办呢?
那么怎么办呢?
解决办法是需要把securityManager和realm先各自独立的注入进来,然后再找个地方组装
我是通过ApplicationContextAware来实现的,把securityManager和realm的装配放到 setApplicationContext里面
@Configuration
public class ShiroConfig implements ApplicationContextAware {
......
@Override
public void setApplicationContext(ApplicationContext applicationContext)
throws BeansException {
try {
//组装realm到securityManager中
final Realm myRealm = (Realm) applicationContext.getBean("myRealm");
final DefaultWebSecurityManager sm = (DefaultWebSecurityManager) applicationContext
.getBean("securityManager");
sm.setRealm(myRealm);
} catch (Exception e) {
throw new Error("Critical system error", e);
}
}
}
最后
以上就是高高摩托为你收集整理的spring boot集成shiro,使用java annotation配置而不是xml配置的经验的全部内容,希望文章能够帮你解决spring boot集成shiro,使用java annotation配置而不是xml配置的经验所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复