1.我们重点看看AbstractRefreshableApplicationContextrefreshBeanFactory方法的实现,这个refreshBeanFactoryFileSystemXmlApplicationContext构造函数中的refresh调用。在这个方法中,通过createBeanFactory构建了一个IoC容器供ApplicationContext使用。这个IoC容器就是我们前面提到过的DefaultListableBeanFactory,同时,它启动了loadBeanDefinitions来载入BeanDefinition,这个过程和前面以编程的方式来使用IoC容器(XmlBeanFacoty)的过程非常类似。

 1 protected final void refreshBeanFactory() throws BeansException {
 2         // 这里判断,如果已经建立了BeanFactory,则销毁并关闭该BeanFactory
 3         if (hasBeanFactory()) {
 4             destroyBeans();
 5             closeBeanFactory();
 6         }
 7         // 这里是创建并设置持有的DefaultListableBeanFactory的地方
 8         // 同时调用loadBeanDefinitions载入BeanDefinition的信息
 9         try {
10             DefaultListableBeanFactory beanFactory = createBeanFactory();
11             beanFactory.setSerializationId(getId());
12             customizeBeanFactory(beanFactory);
13             loadBeanDefinitions(beanFactory);
14             synchronized (this.beanFactoryMonitor) {
15                 this.beanFactory = beanFactory;
16             }
17         }
18         catch (IOException ex) {
19             throw new ApplicationContextException("I/O error parsing bean definition source for " + getDisplayName(), ex);
20         }
21     }
AbstractRefreshableApplicationContext对容器的初始化

相关文章:

  • 2021-09-05
  • 2021-12-21
  • 2021-11-01
  • 2021-07-23
  • 2022-12-23
  • 2021-12-26
  • 2022-12-23
猜你喜欢
  • 2021-11-07
  • 2021-05-14
  • 2022-12-23
  • 2022-12-23
  • 2021-05-26
  • 2021-07-21
相关资源
相似解决方案