Spring <bean> 参数意义
1.id
bean的唯一标识,
2.class
类的完全限定名,
3.parent
父类bean定义的名字。
如果没有任何声明,会使用父bean,但是也可以重写父类。重写父类时,子bean 必须与父bean 兼容,也就是说,
接受父类的属性值和构造器声明的值。
子bean会继承父bean的构造器声明的值,属性值,并且重写父bean的方法。如果init方法,destroy方法已声明,
他们会覆盖父bean相应的设置。
保留的设置会直接从子bean获取,包括depends on,autowire mode,scope,lazy init.
4.abstract
声明bean是否是抽象的,决定该类是否会实例化。默认是false。
注意:abstract属性不会被子bean继承,所以,abstract为true时需要对每个bean显示声明。
5.lazy-init
决定是否延迟实例化,如果为false,则启动时会立即实例化单例模式的bean.默认是false。
注意:lazy-init属性不会被子bean继承。
6.autowire
决定是否自动装配bean的属性。
autowire有4中模式:
- "no"
Spring默认的模式。bean的引用必须在XML文件中通过<ref/>元素或ref属性显示定义。
spring推荐使用的模式,这样可以使文档更清晰明确。
- "byName"
通过属性名使用自动装配。如果一个Cat类拥有一个dog属性,那么Spring会根据名字dog
去寻找bean,如果没有找到bean,则不会自动装配。
- "byType"
如果Spring容器只有该属性类型的一个bean,会自动装配。当有多个该属性类型的bean时
会报错。如果没有,则不会自动装配。
- "constructor"
针对构造器引用,和byType类似。
注意:autowire属性不会被子bean继承。
7.depends-on
该bean初始化时依赖的其他bean的名字,bean工厂确保其他bean在该bean之前完成初始化。
注意:依赖项一般通过bean属性或构造器声明,这个属性对其他依赖(如静态类或启动阶段数据库的准备)是必要的。
注意:depends-on属性不会被子bean继承。
8.scope
scope属性值有四种: singleton,prototype,request,session
singleton:单例模式,默认选项
prototype:非单例模式
request:对于web应用,每一个请求产生一个新的实例
session:对于web应用,一个session产生一个实例
本人水平有限,如果有误,还请指正。
还有几个选项,需要请自行查看文档。
9.autowire-candidate
10.primary
11.init-method
12.destroy-method
13.factory-method
14.factory-bean