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操作。