您的位置:首页 > 编程语言 > Java开发

Spring MVC学习--依赖注入

2013-10-24 18:01 309 查看
一、首先看下概念

依赖注入:曾用名控制反转(Inverse of Control,简称IoC,即一类调用一个接口的实现类,这个实现类由第三方决定)。

现在用名 Dependency Injection,简称DI。

二、依赖注入的几种方式

1、属性注入

通过setXxx()方法注入Bean的属性值或依赖对象。

属性命名规则--属性的前两个字母要么全部大写,要么全部小写,如:iC,aB这样的属性,spring容器启动会报异常。

2、构造函数注入

在Bean实例化的时候,注入属性值,在实例化后可使用。在注入时其中可细分为:

(1、)按类型匹配入参

如:public class Car{

...省略

public Car(string brand,double price){

this.brand = brand;

this.price = price;

}

}

注入的bean文件如下:

<bean id="car" class="com.baobao.ditype.Car">

<constructor-arg type="java.lang.String">

<value>红旗CA72</value>

<constructor-arg>

<constructor-arg type="double">

<value>20000</value>

</constructor-arg>

</bean>

(2、)按索引匹配入参

如:public class Car{

...省略

public Car(string brand,String corp,double price){

this.brand = brand;

this.corp = corp;

this.price = price;

}

}

配置文件如下:

<bean id="car" class="com.baobaotao.ditype.Car">

<--索引从0开始-->

<constructor-arg index="0" value="红旗CA72"/>

<constructor-arg
index="1" value="中国一汽"/>

<constructor-arg
index="2" value="2000"/>

</bean>

(3、)联合使用类型和索引匹配入参

如:public class Car{
...省略
public Car(string brand,String corp,double price){
this.brand = brand;
this.corp = corp;
this.price = price;
}

public Car(string brand,String corp,int maxSpeed){
this.brand = brand;
this.corp = corp;
this.price = price;
}
}
(注:多构造时,单独使用类型注入或索引注入都不能确定为哪个构造赋值,第三个属性值是不同的,因此使用索引加类型联合确定具体的构造函数)
配置文件如下:
<bean id="car" class="com.baobaotao.Car">
<constructor-arg
index="0" type="java.lang.String">
<value>红旗CA72</value>
</constructor>

<constructor-arg
index="1" type="java.lang.String">
<value>中国一汽</value>
</constructor>
<constructor-arg
index="2" type=“int">
<value>200</value>
</constructor>
</bean>
(4、通过自身类型反射匹配入参)
如:
public Boss(String name,Car car,Office office){
this.name=name;
this.car = car;
this.office=office;
}
配置文件如下:
<bean id="boss" class="com.baobaotao.ditype.Boss">
<!--这里没有设置type和index属性-->
<constructor-arg>
<value>John</value>
</constructor-arg>

<constructor-arg>
<ref bean="car"/>
</constructor-arg>

<constructor-arg>
<ref bean="office"/>
</constructor-arg>
</bean>
<bean id="car" class="com.baobaotao.ditype.Car"/>
<bean id="office" class="com.baobaotao.ditype.Office"/>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: