Spring IoC(控制反转)【二】

来源:互联网 发布:mac怎么制作ppt 编辑:程序博客网 时间:2024/06/06 03:54

属性值的配置方式

IoC可以通过两种方式注入依赖的属性,即setter方法和构造器方法。

不论是setter方法还是构造器方法,都需要为方法制定具体的参数值为属性赋值。

参数值有不同的类型,可以分为以下三种情况:


1、基本数据类型和Stirng类型

基本数据类型包括:byte、short、int、long、float、double、char、boolean以及对应的包装器类。

当值的类型是基本类型或者String类型时,可以使用<value>元素配置值。

2、其他bean类型

属性除了可以使基本类型或者Sring类型,还可能是其他类的类型。

public class Order{    private String id;    private Customer customer;}
上述代码中,Order类的属性customer是Customer类型,也就是说Order的customer属性类型是其他bean。

在这种情况下,需要实例化一个Customer类型的bean,然后在Order中通过ref引用这个bean。

<bean id="customer" class="vo.Customer"><property name="custid"><value>1</value></property><property name="custname"><value>John</value></property></bean><bean id="cart" class="vo.Order"><property name="custid"><value>1</value></property><property name="custname"><ref bean="customer"/></property></bean>
上述配置中先实例化了一个id值为customer的Customer类型bean,然后再Order的配置中通过

<ref bean="customer">将其复制给Order的customer属性,也就是Order引用了Customer类型的bean。

3、null值

如果需要为某个属性指定null值,可以使用如下配置:

<property name="name"><null></null></property>
或者

<property name="name"><null/></property>
值得注意的是如果使用下面的配置,则不是空值而是空字符串:

<property name="name"><value></value></property>


集合类型属性配置


在实际应用中,类和类之间可能是一对多的关联关系,那么就需要使用集合类型来持有“多”的一方的对象。

例如,存在Order类和Item类,Order类中关联多个Item实例,因此使用List集合来实现这样的一对多关联关系:

public class Order{private String id;private Customer customer;private List<Item> items;}
当类的属性是集合类型时,也可以使用IoC进行注入。

常用的集合类型有四种,即List、Set、Map以及Properties。

1、<list>

<bean id="item1" class="cart.Item"><property name="itemid"><value>1</value></property><property name="name"><null/></property><property name="price"><value>34.5</value></property></bean><bean id="item2" class="cart.Item"><property name="itemid"><value>2</value></property><property name="name"><value>DVD</value></property><property name="price"><value>23</value></property></bean><bean id="cart" class="cart.Order"><property name="itemid"><value>1</value></property><property name="customer"><ref bean="customer"></property><property name="items"><list><ref bean="item1"/><ref bean ="item2"/></list></property></bean>

上述配置中,首先创建了两个Item类的bean,分别为item1和item2.

在cart的配置中,使用<list>元素将item1和item2添加到集合items中,赋值给属性items。

2、<set>

当集合采用Set类型的集合类时,则采用<set>元素进行装配,用法与<list>相同。

3、<map>

当集合采用Map类型的映射类时,则采用<map>元素进行装配。

<bean><property name=""><map><entry><key><value></value></key><ref/></entry></map></propety></bean>

<map>元素下可以有多对<entry></entry>条目元素,每个条目配置Map的一对键值对。

其中<key>用来配置当前条目的键值,<key>元素内可以使用<value>、<ref>、<list>、<set>等各种类型元素。

键值对中的值也可以是<value>、<ref>、<list>、<set>等各种类型元素。

4、<props>

如果集合采用Properties类型,则使用<props>进行配置。

<bean><property name=""><props><prop key=""></prop><prop key=""></prop></props></property></bean>
<props>的每个条目都只接受字符串类型的值,不能使用其他类型。





0 0
原创粉丝点击