Spring中的bean的属性值有时候包含一些集合类型的属性值,注入属性值的方式和注入一些基本的属性值不一样,他们需要使用专门的方式来注入
常用的集合类型包括: Map、Set、List、数组、属性集合
实例代码:
public class Person {
private String name;
private Integer age;
public String getName () {
return name;
}
public void setName (String name) {
this .name = name;
}
public Integer getAge () {
return age;
}
public void setAge (Integer age) {
this .age = age;
}
}
public class AllSetBean {
private String[] names;
private List<Person> personlist;
private Set<Person> personset;
private Map<Integer, Person> personmap;
private Properties personprop;
public String[] getNames () {
return names;
}
public void setNames (String[] names) {
this .names = names;
}
public List<Person> getPersonlist () {
return personlist;
}
public void setPersonlist (List<Person> personlist) {
this .personlist = personlist;
}
public Set<Person> getPersonset () {
return personset;
}
public void setPersonset (Set<Person> personset) {
this .personset = personset;
}
public Map<Integer, Person> getPersonmap () {
return personmap;
}
public void setPersonmap (Map<Integer, Person> personmap) {
this .personmap = personmap;
}
public Properties getPersonprop () {
return personprop;
}
public void setPersonprop (Properties personprop) {
this .personprop = personprop;
}
}
<bean id="person1" class="org.spring.IocSet.Person" >
<property name="name" value ="成兮" />
<property name="age" value ="20" />
</bean>
<bean id="person2" class="org.spring.IocSet.Person" >
<property name="name" value ="缘分五月" />
<property name="age" value ="20" />
</bean>
<bean id="allSet" class="org.spring.IocSet.AllSetBean" >
<!-- 注入数组 -->
<property name="names" >
<list>
<value >成兮</value >
<value >缘分五月</value >
</list>
</property>
<!-- 注入List集合 -->
<property name="personlist" >
<list>
<ref bean="person1" />
<ref bean="person2" />
</list>
</property>
<!-- 注入Set集合 -->
<property name="personset" >
<set >
<ref bean="person1" />
<ref bean="person2" />
</set >
</property>
<!-- 注入Map集合 -->
<property name="personmap" >
<map>
<entry key="1" value -ref ="person1" />
<entry key="2" value -ref ="person2" />
</map>
</property>
<!-- 注入属性值 -->
<property name="personprop" >
<props>
<prop key="username" >chengxi</prop>
<prop key="password" >970624 </prop>
</props>
</property>
</bean>
public class TestMain {
public static void main (String[] args){
ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml" );
AllSetBean bean = context.getBean("allSet" ,AllSetBean.class);
String[] names = bean.getNames();
System.out .println("测试数组" );
for (String name: names){
System.out .println("name->" +name);
}
List<Person> personl = bean.getPersonlist();
System.out .println("测试List" );
for (Person person: personl){
System.out .println("person.name->" +person.getName()+"\tperson.age->" +person.getAge());
}
Set<Person> persons = bean.getPersonset();
System.out .println("测试Set" );
for (Person person: persons){
System.out .println("person.name->" +person.getName()+"\tperson.age->" +person.getAge());
}
Map<Integer,Person> personm = bean.getPersonmap();
System.out .println("测试Map" );
Iterator it = personm.keySet().iterator();
while (it.hasNext()){
Integer key = (Integer) it.next();
Person person = personm.get (key);
System.out .println("key->" +key+"\tperson.name->" +person.getName()+"\tperson.age->" +person.getAge());
}
Properties personprop = bean.getPersonprop();
System.out .println("测试Properties属性" );
for (Entry<Object,Object> entry:personprop.entrySet()){
System.out .println(entry.getKey().toString()+" " +entry.getValue().toString());
}
System.out .println("*****通过Enumeration取出*****" );
Enumeration en= personprop.keys();
while (en.hasMoreElements()){
String key=(String) en.nextElement();
System.out .println(key+" " +personprop.getProperty(key));
}
}
}