刷新bean工厂、生产内部bean工厂,DefaultListableBeanFactory
设置序列化ID
protected final void refreshBeanFactory() throws BeansException {
if (hasBeanFactory()) {
destroyBeans();
closeBeanFactory();
}
try {
DefaultListableBeanFactory beanFactory = createBeanFactory();
beanFactory.setSerializationId(getId());
customizeBeanFactory(beanFactory);
loadBeanDefinitions(beanFactory);
synchronized (this.beanFactoryMonitor) {
this.beanFactory = beanFactory;
}
}
catch (IOException ex) {
throw new ApplicationContextException("I/O error parsing bean definition source for " + getDisplayName(), ex);
}
}
- customizeBeanFactory子类可以覆盖、自定义bean工厂的配置
- loadBeanDefinitions加载bean的定义信息、此处以注解为例子、xml形式同理 TODO
Q.E.D.