在Spring中依赖注入的方式上一章节中有介绍,主要分为三种:属性注入、构造器注入、接口注入(很少使用)。属性注入最常用,使用<property>元素,使用name属性指定bean的属性名称,value属性或是value子节点指定属性值。如下所示就为属性注入。
<bean id="helloworld" class="com.wpl.spring.test.HelloWorld">
<property name="name" value="小明"></property>
</bean>
通过构造方法注入bean的属性值或是依赖的对象,它保证了bean实例化后就可以使用。构造器注入在 <constructor-arg> 元素里声明属性, <constructor-arg> 中没有 name 属性。
创建一个Car的bean,里面有brand、factory、price三个属性,生成包含三个属性的构造函数。如下:
public Car(String brand, String factory, int price) {
super();
this.brand = brand;
this.factory = factory;
this.price = price;
}
1.按索引匹配入参:
<bean id="car" class="com.wpl.spring.test.Car">
<constructor-arg value="大众" index="0"></constructor-arg>
<constructor-arg value="上海" index="1"></constructor-arg>
<constructor-arg value="30000" index="2"></constructor-arg>
</bean>
上面就是根据索引来入参,索引号从0开始,参数依次入到brand、factory、price属性。
2.按类型匹配入参
<bean id="car2" class="com.wpl.spring.test.Car">
<constructor-arg value="宝马" type="java.lang.String"></constructor-arg>
<constructor-arg value="长春" type="java.lang.String"></constructor-arg>
<constructor-arg value="50000" type="int"></constructor-arg>
</bean>
上面就是通过构造器注入的方式,常用的还是属性注入。