[TOC]

BeanDefinition

  1. BeanDefinition是配置文件元素标签在容器中的内部表示。元素标签有class,scope,lazy-init等配置属性,BeanDefinition则提供对应的beanClass,scope,lazyInit类属性。BeanDefinition与一一对应
  2. uml图
  3. RootBeanDefinition是最常用的实现类,它对应一般性的元素标签。在配置文件中可以定义父和子,父用RootBeanDefinition表示,子用ChildBeanDefinition表示,而没有父的Bean用RootBeanDefinition表示。
  4. Spring通过BeanDefinition将配置文件中的配置信息转换为容器的内部表示,并将这些BeanDefinition注册到BeanDefinitionRegistry中。Spring容器的BeanDefinitionRegistry就像Spring配置信息的内存数据库,后续操作直接冲BeanDefinitionRegistry中读取配置信息。
  5. 创建最终的BeanDefinition主要包括两个步骤
    • 利用BeanDefinitionReader读取承载配置信息的Resource,通过xml解析器解析配置信息的DOM对象,简单为每个生成对应的BeanDefinition对象。但是这里生成的BeanDefinition可能是半成品,因为在配置文件中,可能通过占位符变量引用外部属性文件的属性,这些占位符变量引用外部属性文件的属性,这些占位符在这一步还没有解析出来
    • 利用容器中注册的BeanFactoryPostProcessor对半成品的BeanDefinition进行加工处理,将以占位符表示的配置解析为最终的实际值,这样半成品的BeanDefinition就成为成品的BeanDefinition。

results matching ""

    No results matching ""