SpringBoot底层源码_AbstractBeanDefinition

AnnotatedBeanDefinition是什么

公用Beandefinition的实现类的方法和属性


AbstractBeanDefinition的重要属性

scope

bean的作用范围,单例Bean,原型Bean,默认为""(为单例)

autowire

自动装配,取值来自AutowireCapableBeanFactory的autowire,分别有ByName,ByType,Constructory,No,AutoDetet,分别对应通过name装配,通过类型装配,自动装配构造函数常量,没有自动装配常量,混合自动装配(已弃用),默认为No

dependency

依赖于,有None,Object,Simple,All,四种值,分别对应,没有依赖,依赖于对象常量,部分属性依赖,所有属性依赖,默认为none

dependsOn

 bean 初始化所依赖的 bean 

LazyInit

懒加载

primary

是否主Bean,默认false

initMethodName

初始化方法名

BeanClass

Bean的类

instanceSupplier

实力供应商

factoryMethodName

工厂方法名

FactoryBeanName

工厂名


AbstractBeanDefinition重要的方法

AbstractBeanDefinition的构造方法总共有三种

无参构造

AbstractBeanDenfinnition具有无参构造,因为它较为重要的属性都具备默认值

有参构造

有构造函数和属性值的有参构造

AbstractBeanDefinition的有参构造可以只放入参数值与属性值ConstructorArgumentValues,MutablePropertyValues这两个参数生成AbstractBeandefinition,其他参数均为默认值。

BeanDefinition转为AbstractBeanDefiniton的有参构造

AbstractBeanDefinition可以把BeanDefinition类型的转化为AbstractBeanDefinition,而不用开发者自己手动去属性赋值。(最常用)

overrideFrom

通过传入的BeanDefinition可以覆盖原AbstractBeanDefinition的属性值。

applyDefaults

applyDefaults方法可以使LazyInit,AutowireMode(NO),DependencyCheck(None),InitMethodName,EnforceInitMethod(false),EnforceDestroyMethod(false),DestroyMethodName,这些属性使用默认值。

Set/GetBeanClassName

Bean对象类名的定义

Get/Set/Has/ResolveBeanClass(BeanDefinition没有的)

对Bean对象的放入和获取,ResolveBeanClass方法较为特殊,当Class为空返回为空,当Bean有name则返回BeanClass对象。

GetResolvableType

返回Bean可解析的类型

Set/GetScope

Bean的范围定于与获取

IsSingleton/IsPrototype

是否是单例Bean/原型Bean

SetAbstract/IsAbstract

是否是抽象类,抽象类只作为Bean定义的父级

对与属性的填充只讲到上面这些,其他不一一罗列,通常都是存在set/get/is/resolve/add等方法

add/has/getQualifier/Qualifiers

限定符的管理

getOriginatingBeanDefinition

返回原始 BeanDefinition,如果没有则返回null 。

getMergedBeanDefinition

如果给定 bean 的定义是子 bean 定义,则通过与父级合并返回给定顶级 bean 的RootBeanDefinition。通过BeanName去BeanDefinitions里面去寻找BeanDefinition。
如果存在返回 bean 的(可能合并的)RootBeanDefinition,不存在则抛出BeanDefinitionStoreException

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值