返回介绍

6.4.2 加载 BeanDefinition

发布于 2025-04-22 22:09:12 字数 1795 浏览 0 评论 0 收藏

在第一步中提到了将 ClassPathXmlApplicationContext 与 XmlBeanFactory 创建的对比,在实现配置文件的加载功能中除了我们在第一步中已经初始化的 DefaultListableBeanFactory 外,还需要 XmlBeanDefinitionReader 来读取 XML ,那么在这个步骤中首先要做的就是初始化 XmlBeanDefinitionReader。

@Override

  protected void loadBeanDefinitions(DefaultListableBeanFactory beanFactory) throws

  BeansException, IOException {

  //为指定 beanFactory 创建 XmlBeanDefinitionReader

   XmlBeanDefinitionReader beanDefinitionReader = new XmlBeanDefinitionReader(beanFactory);

  //对 beanDefinitionReader 进行环境变量的设置

  beanDefinitionReader.setEnvironment(this.getEnvironment());

  beanDefinitionReader.setResourceLoader(this);

   beanDefinitionReader.setEntityResolver(new ResourceEntityResolver(this));

  //对 BeanDefinitionReader 进行设置,可以覆盖

  initBeanDefinitionReader(beanDefinitionReader);

  loadBeanDefinitions(beanDefinitionReader);

 }

在初始化了 DefaultListableBeanFactory 和 XmlBeanDefinitionReader 后就可以进行配置文件的读取了。

protected void loadBeanDefinitions(XmlBeanDefinitionReader reader) throws BeansException,

IOException {

  Resource[] configResources = getConfigResources();

  if (configResources != null) {

  reader.loadBeanDefinitions(configResources);

 }

  String[] configLocations = getConfigLocations();

  if (configLocations != null) {

  reader.loadBeanDefinitions(configLocations);

 }

}

使用 XmlBeanDefinitionReader 的 loadBeanDefinitions 方法进行配置文件的加载机注册相信大家已经不陌生,这完全就是开始 BeanFactory 的套路。因为在 XmlBeanDefinitionReader 中已经将之前初始化的 DefaultListableBeanFactory 注册进去了,所以 XmlBeanDefinitionReader 所读取的 BeanDefinitionHolder 都会注册到 DefaultListableBeanFactory 中,也就是经过此步骤,类型 DefaultListableBeanFactory 的变量 beanFactory 已经包含了所有解析好的配置。

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。