spring源码学习(1) -- BeanDefinition的学习

BeanDefinition

BeanDefinition作为定义springBean文件中bean的接口,可以说是bean的抽象数据结构,它包括属性参数,构造器参数,以及其他具体的参数。

AbstractBeanDefinition

AbstractBeanDefinition 采用配置文件生成的抽象类,保存一个bean的所有通用属性。
这里写图片描述

AbstractBeanDefinition的继承

这里写图片描述
- AttributeAccessor
类似于map,具有保存和访问name/value属性的能力
- BeanMetadataElement
具有访问source(配置源)的能力

这里写图片描述

RootBeanDefinition,ChildBeanDefinition,GenericBeanDefinition均继承了AbstractBeanDefiniton,其中BeanDefinition是配置文件元素标签在容器中内部表示形式。元素标签拥有class、scope、lazy-init等配置属性,BeanDefinition则提供了相应的beanClass、scope、lazyInit属性,BeanDefinition和中的属性是一一对应的。其中RootBeanDefinition是最常用的实现类,它对应一般性的元素标签,GenericBeanDefinition是自2.5以后新加入的bean文件配置属性定义类,是一站式服务类。在配置文件中可以定义父和子,父用RootBeanDefinition表示,而子用ChildBeanDefiniton表示,而没有父的就使用RootBeanDefinition表示。AbstractBeanDefinition对两者共同的类信息进行抽象。

  • ScannedGenericBeanDefinition
  • AnnotatedGenericBeanDefinion
  • ConfigurationClassBeanDefinition

BeanDefinitionHolder

这里写图片描述
BeanDefinitionHolder,简单来说其就是一个BeanDefinition的持有者,其定义了一下变量(包括对bean的信息描述、bean的名字、bean的别名),并对以下变量提供get和set操作。

猜你喜欢

转载自blog.csdn.net/liu20111590/article/details/79968155