spring boot集成shiro,使用java annotation配置而不是xml配置的经验
2014-06-30 18:37
399 查看
主要麻烦在于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里面
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); } } }
相关文章推荐
- mybatis简单sql使用java注解而不是xml配置
- mybatis简单sql使用java注解而不是xml配置
- Spring Web工程web.xml零配置即使用Java Config + Annotation
- java使用dom4j解析xml配置文件实现抽象工厂反射示例
- 在Java中使用Jdom读取xml配置文件
- 使用Java并发包线程池和XML实现定时任务动态配置和管理
- [Java学习]使用digester 解析xml配置文件
- spring3 混合使用 XML 与注解(Annotation)进行 Bean 的配置
- JAVA_WEB项目之使用Spring的xml配置方式在项目中管理Lucene检索框架
- Spring入门(8)-基于Java配置而不是XML
- 考虑使用JavaConfig替代XML配置
- 考虑使用JavaConfig替代XML配置
- 大型Java项目中使用maven进行管理,pom.xml文件中build的配置
- java 使用hibernate访问sqlserver如何配置hibernate.cfg.xml
- [Java学习]使用digester 解析xml配置文件
- spring 使用annotation替代xml配置实例(spring实现mail简单实现)
- 在java程序项目中如何使用xml配置文件存储信息简述
- Hibernate3.5.4---java application的xml和annotation环境搭建(hibernate.cfg.xml配置文件说明,映射文件Student.hbm.xml说明
- 在环境变量中为Tomcat配置一个java_home Tomcat在启动的时候,有时候不是很好启动,在server.xml文件下多配置几次端口号就行了。
- SpringMVC配置之使用annotation替代xml