Xml格式的应用启动4
第四步:postProcessBeanFactory(beanFactory):在BeanFactory完成标准的配置后,让子类进行一些定制化的设置。
对应到ClassPathXmlApplicationContext,它其实没有进行实现。
第五步:invokeBeanFactoryPostProcessors(beanFactory):回调注册的BeanFactoryPostProcessor。
protected void invokeBeanFactoryPostProcessors(ConfigurableListableBeanFactory beanFactory) {
PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(beanFactory, getBeanFactoryPostProcessors());
// Detect a LoadTimeWeaver and prepare for weaving, if found in the meantime
// (e.g. through an @Bean method registered by ConfigurationClassPostProcessor)
if (beanFactory.getTempClassLoader() == null && beanFactory.containsBean(LOAD_TIME_WEAVER_BEAN_NAME)) {
beanFactory.addBeanPostProcessor(new LoadTimeWeaverAwareProcessor(beanFactory));
beanFactory.setTempClassLoader(new ContextTypeMatchClassLoader(beanFactory.getBeanClassLoader()));
}
}
由于这里并没有设置BeanFactoryPostProcessor,因此相当于什么都没有做。如果想要添加BeanFactoryPostProcessor,则需要手动context.addBeanFactoryPostProcessor(postProcessor),或者在xml中定义我们自己的BeanFactoryPostProcessor。