GenericBeanDefinition:
MutablePropertyValue | id | autowire | autowire-candidate |
ConstructorArgumentValue | class | dependency-check | |
MethodOverrides | name | depends-on | primary |
parent | init-method | ||
abstract | destroy-method | ||
lazy-init | factory-method |
- id:Bean 的唯一标识名。它必须是合法的 XMLID,在整个 XML 文档中唯一。
- name:用来为 id 创建一个或多个别名。它可以是任意的字母符合。多个别名之间用逗号或空格分 开。
- class:用来定义类的全限定名(包名+类名)。只有子类 Bean 不用定义该属性。
- parent:子类 Bean 定义它所引用它的父类 Bean。这时前面的 class 属性失效。子类 Bean 会继承 父类 Bean 的所有属性,子类 Bean 也可以覆盖父类 Bean 的属性。注意:子类 Bean 和父类 Bean 是同一 个 Java 类。
- abstract(默认为”false”):用来定义 Bean 是否为抽象 Bean。它表示这个 Bean 将不会被实 例化,一般用于父类 Bean,因为父类 Bean 主要是供子类 Bean 继承使用。
- lazy-init(默认为“default”):用来定义这个 Bean 是否实现懒初始化。如果为“true”,它将 在 BeanFactory 启动时初始化所有的 SingletonBean。反之,如果为“false”,它只在 Bean 请求时才开 始创建 SingletonBean.]
- autowire(自动装配,默认为“default”):它定义了 Bean 的自动装载方式。 a、“no”:不使用自动装配功能。b、“byName”:通过 Bean 的属性名实现自动装配。 c、“byType”:通过 Bean 的类型实现自动装配。 d、“constructor”:类似于 byType,但它是用于构造函数的参数的自动组装。 e、“autodetect”:通过 Bean 类的反省机制(introspection)决定是使用“constructor” 还是使用“byType”。
- depends-on(依赖对象):这个 Bean 在初始化时依赖的对象,这个对象会在这个 Bean 初始 化之前创建。
- init-method:用来定义 Bean 的初始化方法,它会在 Bean 组装之后调用。它必须是一个无参数 的方法。
- destroy-method:用来定义 Bean 的销毁方法,它在 BeanFactory 关闭时调用。同样,它也必 须是一个无参数的方法。它只能应用于 singletonBean。
- factory-method:定义创建该 Bean 对象的工厂方法。它用于下面的“factory-bean”,表示 这个 Bean 是通过工厂方法创建。此时,“class”属性失效。
- factory-bean:定义创建该 Bean 对象的工厂类。如果使用了“factory-bean”则“class”属性 失效。
- autowire-candidate:采用 xml 格式配置 bean 时,将元素的 autowire-candidate 属性设置为 false,这样容器在查找自动装配对象时,将不考虑该 bean,即它不会被考虑作为其它 bean 自动装配的候选者,但是该 bean 本身还是可以使用自动装配来注入其它 bean 的。
- MutablePropertyValues:用于封装标签的信息,其实类里面就是有一个 list,list 里面是 PropertyValue 对象,PropertyValue 就是一个 name 和 value 属性,用于封装标签 的名称和值信息
- ConstructorArgumentValues:用于封装标签的信息,其实类里面就是有 一个 map,map 中用构造函数的参数顺序作为 key,值作为 value 存储到 map 中
- MethodOverrides:用于封装 lookup-method 和 replaced-method 标签的信息,同样的类里 面有一个 Set 对象添加 LookupOverride 对象和 ReplaceOverride 对象
总结:
beandefination在spring构建bean时充当原料市场角色,必须理解它个个属性的含义,有利于我们理解spring ioc