关于beanDefinition 的第一篇笔记 一共三篇 https://blog.csdn.net/java_lyvee/article/details/102633067
beanDefinition:org.springframework.beans.factory.config.BeanDefinition
常用子类:org.springframework.beans.factory.support.GenericBeanDefinition
描述每个bean的定义,dependsOn,scope,lazy,beanClassName等
启动过程:
容器: 由spring各个组件组成
BeanFactoryPostprocessor: 扫描完成后调用
BeanDefinition的各个实现:
RootBeanDefinition.setParentName:
@Override
public void setParentName(@Nullable String parentName) {
if (parentName != null) {
throw new IllegalArgumentException("Root bean cannot be changed into a child bean with parent reference");
}
}
ChildBeanDefinition构造方法
public ChildBeanDefinition(String parentName) {
super();
this.parentName = parentName;
}
GenericBeanDefinition可以完全代替ChildBeanDefinition,但是不能完全代替RootBeanDefinition,因为GenericBeanDefinition和RootBeanDefinition在merge后只能用RootBeanDefinition接收。
BeanDefinition类图: