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
|