•什么是BeanDefinition?
•BeanDefinition
是Spring Framework 中定义Bean 的配置元信息接口,包含:
•Bean 的类名(包含它的包名,即类的全路径;以及它对应的类必须是一个具体的实现类)
•BeanDefinition 元信息
属性(Property) 说明
Class Bean 全类名,必须是具体类,不能用抽象类或接口
Name Bean 的名称或者ID,bean的识别符
Scope Bean 的作用域(如:singleton、prototype 等)
Constructor arguments Bean 构造器参数(用于依赖注入)第三方api未提供默认的构造器需要指定构造器参数初始化
Properties Bean 属性设置(用于依赖注入)
Autowiring mode Bean 自动绑定模式(如:通过名称byName,byType,byConstructor)属性和外面引用自动关联或自动绑定,此方式可配置,这也称为一些容器或bean的配置元信息
Lazy initialization mode Bean 延迟初始化模式(延迟和默认非延迟)
Initialization method Bean 初始化回调方法名称
Destruction method Bean 销毁回调方法名称(与Initialization method成对出现的)
•BeanDefinition 构建 通过xml配置方式多一些,BeanDefinition 并非bean最终状态,可以自定义修改
•通过BeanDefinitionBuilder rootBeanDefinition()创建出没有父类
addConstructorArgReference()将构造函数的参数用一个bean的方式去引用
•通过AbstractBeanDefinition 以及派生类
•Bean 行为配置元素,如作用域、自动绑定的模式(autowriting),生命周期(初始化或者销毁)回调等
•其他Bean 引用,又可称作合作者(collaborators)或者依赖(dependencies)依赖注入,不仅可以注入bean,还可以注入配置;
•配置设置,比如Bean 属性(Properties),bean正好对应线程池或者数据库连接池,此时bean正好有大小和相关的属性