引言

XML,org.springframework.beans.factory.config.BeanDefinition是部署文件<
bean >元素标签在容器中地里边表示。< bean
>元素标签拥有class、scope、lazy-init等配备属性,BeanDefinition则提供了对应地beanClass、scope、lazyInit类属性,BeanDefinition就像<
bean >中镜中人,二者是逐一对应地。

实现类

RottBeanDefinition是最常用地贯彻类,它对应一般性地< bean >
元素标签。大家驾驭,在布局文件中得以定义父< bean >和子< bean
>,父< bean >用RootBeanDefiniton表示,子< bean
>用ChildBeanDefinition表示,而尚未父< bean >的< bean
>则用RootBeanDefinition表示。AbstractBeanDefintion对两端一起的类信息举行抽象。
Spring配置文件通过BeanDefintion将配置文件中的< bean
>配置音讯变换为容器的内部表示,并将这多少个BeanDefinition注册到BeanDefinitionRegistry中。Spring容器的BeanDefintionRegistry就像Spring配置消息的内存数据库,后续操作间接从BeanDefintionRegistry中读取配置音信。一般情况下,BeanDefinition只在容器启动时加载并分析,除非容器刷新或重启,这些音信不会暴发变化。当然,假如用户有异样的需求,也得以经过编程的方法在运行期调整BeanDefinition的定义。

创建BeanDefinition

始建BeanDefinition首要不外乎五个步骤:

  1. 应用BeanDefinition里德(Reade)r读取承载配置信息的Resource,通过XML解析器解析配置信息的DOM对象,简单地每个<
    bean >生成对应地BeanDefinition对象。但是这里生成的BeanDefinition可能是半成品,因为在布局文件中,可能通过占位符变量引用外部属性文件的特性,这些占位符变量在这一步里还一直不被分析出来;
  2. 拔取容器中注册的BeanFatoryPostProcessor对半成品的BeanDefinition举行加工处理,将以占位符表示的布置分析为最后的实际值,这样半成品的BeanDefinition就变成成品的BeanDefinition。

相关文章

网站地图xml地图