list<.class>
: 使用list配合ref
//people.java
public class People {
private String name;
private int age;
private List<Car> cars;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public List<Car> getCars() {
return cars;
}
public void setCars(List<Car> cars) {
this.cars = cars;
}
public String getName() {
return name;
}
public void setName(String name)
{
this.name = name;
}
@Override
public String toString() {
return "People [name=" + name + ", age=" + age + ", cars=" + cars + "]";
}
public void say()
{
System.out.println("I am " + name);
}
}
<!--.xml-->
<bean id="people1" class="com.whiteblack.spring.listdemo.People">
<property name="name" value="listdemo"></property>
<property name="age" value="21"></property>
<property name="cars" >
<list>
<ref bean="car1"/>
<ref bean="car2"/>
</list>
</property>
</bean>
list<String或其它类型>
: 使用list配合value
//Peopletwo.java
public class Peopletwo {
private String name;
private List<String> habits;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<String> getHabits() {
return habits;
}
public void setHabits(List<String> habits) {
this.habits = habits;
}
@Override
public String toString() {
return "Peopletwo [name=" + name + ", habits=" + habits + "]";
}
}
<!--.xml-->
<bean id="people2" class="com.whiteblack.spring.listdemo.Peopletwo">
<property name="name" value="listString"></property>
<property name="habits">
<list>
<value>唱歌</value>
<value>跳舞</value>
<value>画画</value>
</list>
</property>
</bean>
map<String,Car>
:使用map节点及map的entry字节点配置成员
public class PeopleThree {
private String name;
private Map<String,Car> cars;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Map<String, Car> getCars() {
return cars;
}
public void setCars(Map<String, Car> cars) {
this.cars = cars;
}
@Override
public String toString() {
return "PeopleThree [name=" + name + ", cars=" + cars + "]";
}
}
<!-- 配置map属性值 -->
<bean id="people5" class="com.whiteblack.spring.listdemo.PeopleThree">
<property name="name" value="peoplemap"></property>
<property name="cars">
<!-- 使用map节点及map的entry字节点配置成员 -->
<map>
<entry key="AA" value-ref="car1"></entry>
<entry key="BB" value-ref="car2"></entry>
</map>
</property>
</bean>
使用 <props>
定义 java.util.Properties, 该标签使用多个 <props>
作为子标签. 每个 <props>
标签必须定义 key 属性.
//DataSource.java
import java.util.Properties;
public class DataSource {
private Properties property;
public Properties getProperty() {
return property;
}
public void setProperty(Properties property) {
this.property = property;
}
@Override
public String toString() {
return "DataSourse [property=" + property + "]";
}
}
//使用props 和 prop子节点配置Properties属性
<bean id="prop" class="com.whiteblack.spring.listdemo.DataSource">
<property name="property">
<props>
<prop key="user">root</prop>
<prop key="password">123456</prop>
<prop key="jdbcUrl">jdbc:mysql:///test</prop>
<prop key="driverClass">com.mysql.jdbc.Driver</prop>
</props>
</property>
</bean>
使用 utility scheme 定义集合
使用基本的集合标签定义集合时, 不能将集合作为独立的 Bean 定义, 导致其他 Bean 无法引用该集合, 所以无法在不同 Bean 之间共享集合.
可以使用 util schema 里的集合标签定义独立的集合 Bean. 需要注意的是, 必须在 <beans>
根元素里添加 util schema 定义
<!-- 配置单例的集合bean 以供多个bean进行引用 -->
<util:list id="cars">
<ref bean="car1"></ref>
<ref bean="car2"></ref>
</util:list>
使用p命名空间为bean属性赋值
<bean id="people6" class="com.whiteblack.spring.listdemo.People" p:name="p:name" p:age="21" p:cars-ref="cars">
</bean>