1、什么是BeanDefinition

答:BeanDefinition是Spring里面的最小化接口,允许Spring通过BeanPostProcessor后置处理器去修改属性值和其他bean的元数据等。

Spring是通过BeanDefinition的实现类去创建Bean对象,官方推荐,默认使用的是GenericBeanDefinition。

其里面核心的属性有:beanClassName类的路径名称,scope作用域,abstract是否抽象类,factoryBeanName、factoryMethodName工厂bean,创建本bean的方法

String[] dependsOn,本bean所依赖bean的beanName数组,primary(boolean),当有好几个bean被一个bean依赖注入,本bean是头号种子选手,当AutowiredCandidate(boolean)

false的话就是没有资格被别人注入。ConstructorAgumentValues,和MutablePropertyValues,一个是构造器注入, 另外一个是set方法注入。

 

延伸:

BeanDefinition是一个最小化的接口,非抽象的实现类有三个

RootBeanDefinition、ChildBeanDefinition、GenericBeanDefinition

RootBeanDefinition 跟@Configuration注解有关

ChildBeanDefinition 从2.5以后就被GenericBeanDefinition给替代了

是因为GenericBeanDefinition可以动态去设置parentName属性,预先定义parent/child太死了。

 

posted @ 2021-12-29 18:06  正能量教官  阅读(441)  评论(0编辑  收藏  举报