在Spring中并没有具体去实现postProcessBeanFactory方法,是提供给想要实现BeanPostProcessor的三方框架使用的。谁要使用谁就去实现。作用是在BeanFactory准备工作完成后做一些定制化的处理,一般结合BeanPostProcessor接口的实现类一起使用,注入一些重要资源
举例
一个很简单的小demo,就是获得XML文件中注入的值,然后启动Spring,最后输出获得的值
XML配置文件
main方法为
输出结果为
但是现在,如果需要更改name值,现在喜欢唱,跳,rap,篮球的是李四
第一种方法是直接修改配置文件,将name改成李四,其实Spring提供了方法,在不修改配置文件的情况下修改name的值,就是通过子类重写父类的方法
这里重写的就是postProcessBeanFactory方法
修改代码后,如下
运行后
其实postProcessBeanFactory方法不只是修改配置文件中Bean的数据,既然拿到了beanDefinition,我们都知道beanDefinition就是Bean的定义,此时bean还未实例化,所以在它实例化前,我们可以对这个Bean作出很多修改,故而postProcessBeanFactory它可以做的事情有很多。
总结
postProcessBeanFactory是模板方法,此时,所有的beanDefinition已经加载,但是还没有实例化。 允许在子类中对beanFactory进行扩展处理。比如添加ware相关接口自动装配设置,添加后置处理器等,是子类扩展prepareBeanFactory(beanFactory)的方法
评论区