public class MyBeanFactoryPostProcessor
implements BeanFactoryPostProcessor
{
/**
* 重写该方法,对Spring进行后处理。
* @param beanFactory Spring容器本身
*/
public void postProcessBeanFactory(
ConfigurableListableBeanFactory beanFactory)
throws BeansException
{
System.out.println("######程序对Spring所做的BeanFactory的初始化没有改变...#############");
System.out.println("#############Spring容器是:" + beanFactory+"#####################");
}
<!-- 配置Bean后处理器,可以无需指定id属性 -->
<bean id="beanPostProcessor"
class="org.crazyit.app.util.MyBeanPostProcessor"/>
<!-- 配置容器后处理器 -->
<bean id="beanFactoryPostProcessor"
class="org.crazyit.app.util.MyBeanFactoryPostProcessor"/>
执行下面代码:
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
System.out.println("=============程序已经实例化BeanFactory...");
Person p = ctx.getBean("chinese" , Person.class);
System.out.println("=============程序中已经完成了chinese bean的实例化...");
p.useAxe();
结果如下:
可见:
容器后处理器执行的操作在上一篇我们讲的所有操作之前,包括bean调用构造函数,init方法,bean后处理器执行之前