spring bean的初始化顺序与BeanPostProcessor
一、问题提出
如下代码:
@Configuration public class ShiroConfig { // 定义bean @Bean public ShiroFilterFactoryBean shirFilter(){ } } // 注意:ShiroFilterFactoryBean 实现了 FactoryBean, BeanPostProcessor // 有一个postProcessBeforeInitialization()方法的执行优先级很高 @Configuration public class ShiroFilterConfig { // 构造函数,注入ShiroFilterFactoryBean public ShiroFilterConfig(ShiroFilterFactoryBean shiroFilter) { } }
问题:发现在ShiroFilterConfig的构造函数执行之前,ShiroFilterFactoryBean的postProcessBeforeInitialization()方法就执行了。这样就会造成后面对ShiroFilterFactoryBean的配置,都不会生效。
目标:要在ShiroFilterConfig初始化之后,再执行ShiroFilterFactoryBean的postProcessBeforeInitialization()方法。
解决方案:让ShiroFilterConfig也implement BeanPostProcessor。