一、通过构造方法注入
1.1、例子
1.2、注意
1、通过构造函数创建Bean对象,如果构造函数有多个的话,可以采用index(第几个参数确定具体的构造函数,也可以通过type这个字段,更加可以采用两者结合)。
2、注意普通类型用value,但是对于对象的话,用ref=""。
<bean id="car2" class="com.jeff.spring.demo.ioc.helloword.Car" >
<constructor-arg value="现代公司" type="java.lang.String"/>
<constructor-arg value="现代" type="java.lang.String"/>
<constructor-arg value="100000F" type="java.lang.float"/>
</bean>
通过type类型创建对象也是可以的,但是这里抛了异常(不知道为什么)。(不推荐用这种方式)
二、详解bean属性
参考:http://blog.youkuaiyun.com/supportuat/article/details/50652935
bean属性 | |
id | 该bean对象的唯一ID |
abstract | true代表这个bean不能实例化,相当于抽象类,与parent属性结合用,这样的话,可以继承这个抽象bean的属性了。 参考:https://my.oschina.net/u/1984151/blog/295996 |
autowire-candidate | 这个bean是否作为其它bean注入的候选者,如果设置false的话,这个bean就不会考虑为被另一个Bean注入。 |
autowire | 自动装配 http://www.cnblogs.com/ViviChan/p/4981539.html |
depends-on | 若A depends-on B 意思是实例化A之前必须先实例化B,但A不需要持有B的实例 |
destroy-method | 该对象的销毁的时候会调用的函数(释放资源) |
factory-bean | 通过实例工厂方法创建bean,class属性必须为空,factory-bean属性必须指定一个bean的名字,这个bean一定要在当前的bean工厂或者父bean工厂中,并包含工厂方法。而工厂方法本身通过factory-method属性设置 |
factory-method | 创建Bean的工厂方法。factory-bean工厂Bean,与factory-method配合使用,通过factory-bean的factory-method 创建Bean |
init-method | 该对象的创建的时候会调用的函数(初始化) |
lazy-init | true表示该bean是懒加载,容器初始化的时候不进行初始化。只有要用到这个Bean的属性或者方法的时候才会创建实例对象。也就是得到的是一个代理对象。 |
name | bean的name,一般不用,一般用ID即可 |
parent | 已经讲解,结合abstract |
primary | primary属性为true,自动装配时当出现多个Bean的候选者时,属性primary=true的Bean被作为首选者,不然将抛出异常 |
scope | singleton(单例,默认) prototype(多例) |