第五章第六节-装配集合

来源:互联网 发布:淘宝店铺注册流程 编辑:程序博客网 时间:2024/04/28 20:06

         按照spring的HelloWorld案例,创建一个项目。涉及的bean类三个Car.java House.java Person.java,其中Car和House是Person的成员。 DataBase.java类是测试Properties属性的。 MainTest.java是一个有main函数的测试类。 spring.xml是容器配置文件(结尾有整个项目的完整代码)。

一、配置List和Map集合

        在Person类中有如下所示的两个成员变量,通过使用list和map标签即可完成集合的属性注入。

        在list中即可以使用ref引用其他bean的id作为集合元素,也可以使用bean定义一个合法的内部bean作为集合元素。

        map的方式与list相似,由于是键值对所以需要使用entry来制定key和value的值。

        至于set、数组与list的配置基本相同,就不再做介绍。

        private List<Car> cars;
private Map<String, House> houses;

<bean id="person" class="com.escore.beans.Person"><property name="name" value="Tom"></property><!-- 配置List --><property name="cars"><list><ref bean="car1"/><bean class="com.escore.beans.Car"><property name="brand" value="BYD"></property></bean></list></property><!-- 配置Map --><property name="houses"><map><entry key="xj001" value-ref="house1"></entry><entry key="xj111"><bean class="com.escore.beans.House"><property name="address" value="XiangJiangRoad111"></property></bean></entry></map></property></bean>
二、配置独立的集合
      首先需要引入spring的util空间,引入后就可以配置一个独立的集合类型。如下面的代码所示,配置了一个list和map集合。这里都是用了引用的方式配置集合的元素,按照上面的配置集合元素也是可以的。这样配置后,就可以反复使用list和map,只要想person2一样引入它们的id即可。

<util:list id="cars"><ref bean="car1"/><ref bean="car2"/></util:list><util:map id="houses"><entry key="h1" value-ref="house1"></entry><entry key="h2" value-ref="house2"></entry></util:map><bean id="person2" class="com.escore.beans.Person"><property name="name" value="Jerry"></property><property name="cars" ref="cars"></property><property name="houses" ref="houses"></property></bean>
三、配置Properties属性

       在DataBase类中有一个Properties类型的properties属性。按照下面的配置文件,即可以配置Properties的属性。

       <bean id="dataBase" class="com.escore.beans.DataBase"><property name="properties"><props><prop key="url"></prop><prop key="driven">com.mysql.jdbc.Driver</prop><prop key="user">root</prop><prop key="password">pwd</prop></props></property></bean>

       在MainTest测试类中通过获取不同的bean可以查看到相应的效果。

------------------------------------------------------------------------------下面是本节的完整代码---------------------------------------------------------
Car.java

public class Car {private String brand;public String getBrand() {return brand;}public void setBrand(String brand) {this.brand = brand;}@Overridepublic String toString() {return "Car [brand=" + brand + "]";}}
DataBase.java
mport java.util.Properties;public class DataBase {private Properties properties;public Properties getProperties() {return properties;}public void setProperties(Properties properties) {this.properties = properties;}@Overridepublic String toString() {return "DataBase [properties=" + properties + "]";}}
House.java
public class House {private String address;public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}@Overridepublic String toString() {return "House [address=" + address + "]";}}
Person.java

import java.util.List;import java.util.Map;public class Person {private String name;private List<Car> cars;private Map<String, House> houses;public Map<String, House> getHouses() {return houses;}public void setHouses(Map<String, House> houses) {this.houses = houses;}public String getName() {return name;}public void setName(String name) {this.name = name;}public List<Car> getCars() {return cars;}public void setCars(List<Car> cars) {this.cars = cars;}@Overridepublic String toString() {return "Person [name=" + name + ", cars=" + cars + ", houses=" + houses + "]";}}
MainTest.java

import org.springframework.context.support.ClassPathXmlApplicationContext;import com.escore.beans.DataBase;import com.escore.beans.Person;public class MainTest {public static void main(String[] args) {ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("spring.xml");Person person = (Person) ctx.getBean("person2");System.out.println(person);DataBase dataBase = (DataBase) ctx.getBean("dataBase");System.out.println(dataBase);ctx.close();}}
spring.xml

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:util="http://www.springframework.org/schema/util"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.1.xsd"><bean id="car1" class="com.escore.beans.Car"><property name="brand" value="BMW"></property></bean><bean id="car2" class="com.escore.beans.Car"><property name="brand" value="Audi"></property></bean><bean id="house1" class="com.escore.beans.House"><property name="address" value="XiangJiangRoad001"></property></bean><bean id="house2" class="com.escore.beans.House"><property name="address" value="XiangJiangRoad011"></property></bean><bean id="person" class="com.escore.beans.Person"><property name="name" value="Tom"></property><!-- 配置List --><property name="cars"><list><ref bean="car1"/><bean class="com.escore.beans.Car"><property name="brand" value="BYD"></property></bean></list></property><!-- 配置Map --><property name="houses"><map><entry key="xj001" value-ref="house1"></entry><entry key="xj111"><bean class="com.escore.beans.House"><property name="address" value="XiangJiangRoad111"></property></bean></entry></map></property></bean><!-- 独立的集合 --><util:list id="cars"><ref bean="car1"/><ref bean="car2"/></util:list><util:map id="houses"><entry key="h1" value-ref="house1"></entry><entry key="h2" value-ref="house2"></entry></util:map><bean id="person2" class="com.escore.beans.Person"><property name="name" value="Jerry"></property><property name="cars" ref="cars"></property><property name="houses" ref="houses"></property></bean><!-- 配置Properties属性 --><bean id="dataBase" class="com.escore.beans.DataBase"><property name="properties"><props><prop key="url"></prop><prop key="driven">com.mysql.jdbc.Driver</prop><prop key="user">root</prop><prop key="password">pwd</prop></props></property></bean></beans>















0 0
原创粉丝点击