参考文章:
这篇文章主要对BeanDefinition类进行解析,它是spring对bean的定义
BeanDefinition
是一个接口,它描述了一个 Bean 实例的定义,包括属性值、构造方法值和继承自它的类的更多信息
public interface BeanDefinition extends AttributeAccessor, BeanMetadataElement
父类
BeanDefinition 继承 AttributeAccessor 和 BeanMetadataElement 接口
AttributeAccessor
- 定义了与其它对象的(元数据)进行连接和访问的约定,即对属性的修改,包括获取、设置、删除
public interface AttributeAccessor {
void setAttribute(String name, @Nullable Object value);
@Nullable
Object getAttribute(String name);
@Nullable
Object removeAttribute(String name);
boolean hasAttribute(String name);
String[] attributeNames();
}
BeanMetadataElement
- Bean 元对象持有的配置元素可以通过
#getSource()方法来获取
public interface BeanMetadataElement {
@Nullable
Object getSource();
}
子类
类图
主要的实现类
ChildBeanDefinitionRootBeanDefinitionGenericBeanDefinition
- 如果配置文件中定义了父
<bean>和 子<bean>,则父<bean>用 RootBeanDefinition 表示,子<bean>用 ChildBeanDefinition 表示,而没有父<bean>的就使用RootBeanDefinition 表示。- GenericBeanDefinition 为一站式服务类