问题场景:spring
配置ShrioConfig时,想注入.yml的参数进行配置springboot
解决办法:spa
若是注释掉shiroEhcacheManager 如下全部bean的建立,项目能启动,当我@Bean(name = "lifecycleBeanPostProcessor")建立这个bean的时候就抛出了上面的异常。这么分析过来问题应该出在这个bean上。接口
百度了一下,LifecycleBeanPostProcessor用于在实现了Initializable接口的Shiro bean初始化时调用Initializable接口回调,在实现了Destroyable接口的Shiro bean销毁时调用 Destroyable接口回调。it
而我在建立的EhCacheManager 正是实现了Initializable接口,官方的在配置上面的说明大概意思就是 使用@Configuration配置,会在上下文初始化的时候强制的注入一些依赖。致使一下不可知的初始化。尤为是建立BeanPostProcessor 和 BeanFactoryPostProcessor的时候(LifecycleBeanPostProcessor正是BeanPostProcessor 的子类)。io
应该将这些建立Bean的方法前面加上static。让使用configuration的类在没有实例化的时候不会去过早的要求@Autowired和@Value
进行注入。
最后解决问题很简单,只要在建立LifecycleBeanPostProcessor的方法变为静态static方法。百度