我是靠谱客的博主 高高摩托,最近开发中收集的这篇文章主要介绍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配置的经验所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(58)

评论列表共有 0 条评论

立即
投稿
返回
顶部