spring源码学习--BeanDefinition

BeanDefinition是spring进行实例化必须要有的一个对象,
Spring在实例化过程中根据beanDefinition对象里面的属性信息进行实例化Bean的操作

BeanDefinition 在spring 中贯穿始终,spring 要根据BeanDefinition 对象来实例化bean,只要把解析的标签,扫描的注解类封装成BeanDefinition 对象,spring才能实例化bean。它的实现类有ChildBeanDefinition, GenericBeanDefinition, RootBeanDefinition。
流程图-xml解析和BeanDefinition封装核心方法 refreshBeanFactory()
BeanDefinition笔记图
BeanDefinition 中的属性
(1)、id:Bean 的唯一标识名。它必须是合法的XMLID,在整个XML 文档中唯一。
(2)、name:用来为id 创建一个或多个别名。它可以是任意的字母符合。多个别名之间用逗号或空格分
开。
(3)、class:用来定义类的全限定名(包名+类名)。只有子类Bean 不用定义该属性。
(4)、parent:子类Bean 定义它所引用它的父类Bean。这时前面的class 属性失效。子类Bean 会继承
父类Bean 的所有属性,子类Bean 也可以覆盖父类Bean 的属性。注意:子类Bean 和父类Bean 是同一
个Java 类。
(5)、abstract(默认为”false”):用来定义Bean 是否为抽象Bean。它表示这个Bean 将不会被实
例化,一般用于父类Bean,因为父类Bean 主要是供子类Bean 继承使用。
(7)、lazy-init(默认为“default”):用来定义这个Bean 是否实现懒初始化。如果为“true”,它将
在BeanFactory 启动时初始化所有的SingletonBean。反之,如果为“false”,它只在Bean 请求时才开
始创建SingletonBean。
(8)、autowire(自动装配,默认为“default”):它定义了Bean 的自动装载方式。
a、“no”:不使用自动装配功能。
b、“byName”:通过Bean 的属性名实现自动装配。
c、“byType”:通过Bean 的类型实现自动装配。
d、“constructor”:类似于byType,但它是用于构造函数的参数的自动组装。
e、“autodetect”:通过Bean 类的反省机制(introspection)决定是使用“constructor”还是使用“byType”。
(10)、depends-on(依赖对象):这个Bean 在初始化时依赖的对象,这个对象会在这个Bean 初始
化之前创建。
(11)、init-method:用来定义Bean 的初始化方法,它会在Bean 组装之后调用。它必须是一个无参数
的方法。
(12)、destroy-method:用来定义Bean 的销毁方法,它在BeanFactory 关闭时调用。同样,它也必
须是一个无参数的方法。它只能应用于singletonBean。
(13)、factory-method:定义创建该Bean 对象的工厂方法。它用于下面的“factory-bean”,表示
这个Bean 是通过工厂方法创建。此时,“class”属性失效。
(14)、factory-bean:定义创建该Bean 对象的工厂类。如果使用了“factory-bean”则“class”属性
失效。
(15)、autowire-candidate:采用xml 格式配置bean 时,将元素的autowire-candidate
属性设置为false,这样容器在查找自动装配对象时,将不考虑该bean,即它不会被考虑作为其它bean
自动装配的候选者,但是该bean 本身还是可以使用自动装配来注入其它bean 的。
(16)、MutablePropertyValues:用于封装标签的信息,其实类里面就是有一个list,list
里面是PropertyValue 对象,PropertyValue 就是一个name 和value 属性,用于封装标签
的名称和值信息
(17)、ConstructorArgumentValues:用于封装标签的信息,其实类里面就是有
一个map,map 中用构造函数的参数顺序作为key,值作为value 存储到map 中
(18)、MethodOverrides:用于封装lookup-method 和replaced-method 标签的信息,同样的类里
面有一个Set 对象添加LookupOverride 对象和ReplaceOverride 对象

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值