和BeanPostProcessor类似,不过这个是在BeanFactory实例化之后的后置处理器,同样可以通过@Bean声明,方法标为static,如下两图:
一个典型的作用就是,可以把在spring.factories中注册的监听器去掉了,把监听中的方法挪到这个PostProcessor中,就可以在容器初始化之前进行配置,比如注册Scope、编程添加BeanPostProcessor等,可以参考Spring提供的一些实现,例如PropertyOverrideConfigurer
和PropertySourcesPlaceholderConfigurer
。
启动应用,打印如下图:
可以看到,BeanFactoryPostProcessor最先执行,那么也不需要通过注册ApplicationListener来监听事件再处理,方便了许多。