spring bean的初始化顺序与BeanPostProcessor
2018年06月27日

一、问题提出

如下代码:

@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