假设,有一个客户A:CustomerA.java
public class CustomerA {
private Integer id; // 编号
private String name;// 名称
private Set<Tel> telSet; // 电话
private List<City> cityList; // 城市
private Map<Tel, City> telCityMap;// 电话--城市
//省略getter,setter...
}
电话类:Tel.java
public class Tel {
private String telNum;
//省略getter,setter
}
城市类:City
public class City {
private String cityName;
//省略getter,setter
}
重点:配置xml文件 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" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <bean id="tel1" class="b.Tel"> <property name="telNum" value="135"></property> </bean> <bean id="tel2" class="b.Tel"> <property name="telNum" value="136"></property> </bean> <bean id="tel3" class="b.Tel"> <property name="telNum" value="137"></property> </bean> <bean id="city1" class="b.City"> <property name="cityName" value="北京"></property> </bean> <bean id="city2" class="b.City"> <property name="cityName" value="上海"></property> </bean> <bean id="city3" class="b.City"> <property name="cityName" value="广州"></property> </bean> <bean id="customerA" class="b.CustomerA"> <!-- 基本类型与及其封装类型都用value属性来配置值 --> <property name="id" value="1"></property> <property name="name" value="candy"></property> <!-- 注入引用类型的集合的值 --> <property name="telSet"> <set> <ref bean="tel1" /> <ref bean="tel2" /> <ref bean="tel3" /> </set> </property> <property name="cityList"> <list> <ref bean="city1" /> <ref bean="city2" /> <ref bean="city3" /> </list> </property> <property name="telCityMap"> <map> <entry key-ref="tel1"> <ref bean="city1" /> </entry> <entry key-ref="tel2"> <ref bean="city2" /> </entry> <entry key-ref="tel3"> <ref bean="city3" /> </entry> </map> </property> </bean> </beans>
单元测试:TestCustomerA.java
public class TestCustomerA {
@Test
public void testSetValueToCustomerA() {
// 1.启动IOC容器
ApplicationContext ac = new ClassPathXmlApplicationContext(
"b/spring.xml");
//2.获取bean
CustomerA customerA = (CustomerA) ac.getBean("customerA");
System.out.println(customerA.getName());
Set<Tel> telSet = customerA.getTelSet();
for (Tel tel : telSet) {
System.out.println(tel.getTelNum());
}
List<City> cityList = customerA.getCityList();
for (City city : cityList) {
System.out.println(city.getCityName());
}
Map<Tel, City> telCityMap = customerA.getTelCityMap();
Set<Entry<Tel, City>> entrySet = telCityMap.entrySet();
for (Entry<Tel, City> entry : entrySet) {
System.out.println(entry.getKey().getTelNum() + "----"
+ entry.getValue().getCityName());
}
}
}
注意:在学习的时候我把所有的文件都放在了项目的b包中,在实际开发中不建议这么做,应该按照约定俗成的包命名规则来搞。所用到Spring IOC/CORE模块的jar包在附件。