天天看點

Spring學習筆記04--spring如何裝配集合類型的屬性

spring如何裝配集合類型的屬性?

要注入的集合屬性有很多,這裡舉幾個常見的例子:

list、 set 、map 和 properties的注入:

下面這個類有如下四個屬性:

package cn.itcast.service.impl;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;

import cn.itcast.dao.PersonDao;
import cn.itcast.service.IPersonService;

public class PersonServiceBean implements IPersonService {
    private PersonDao personDao;
    private String name;
    private List<String> list = new ArrayList<String>();
    private Set<String> set = new HashSet<String>();
    private Properties prop = new Properties();
    private Map<String,String> map = new HashMap<String,String>();

    public void setPersonDao(PersonDao personDao) {
        this.personDao = personDao;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public List<String> getList() {
        return list;
    }

    public void setList(List<String> list) {
        this.list = list;
    }

    public Set<String> getSet() {
        return set;
    }

    public void setSet(Set<String> set) {
        this.set = set;
    }

    public Properties getProp() {
        return prop;
    }

    public void setProp(Properties prop) {
        this.prop = prop;
    }

    public Map<String, String> getMap() {
        return map;
    }

    public void setMap(Map<String, String> map) {
        this.map = map;
    }
}
           

beans.xml配置檔案:

<bean id="personService" class="cn.itcast.service.impl.PersonServiceBean" scope="prototype" init-method="init"
   destroy-method="destroy">
      <property name="set">
         <set>
            <value>value01</value>
            <value>value02</value>
            <value>value03</value>
         </set>
      </property>
      <property name="list">
         <list>
            <value>list value 01</value>
            <value>list value 02</value>
            <value>list value 03</value>
         </list>
      </property>
      <property name="prop">
         <props>
            <prop key="key 01">value 01</prop>
            <prop key="key 02">value 02</prop>
            <prop key="key 03">value 03</prop>
         </props>
      </property>
      <property name="map">
         <map>
            <entry key="map key 01" value="map value 01"/>
            <entry key="map key 02" value="map value 02"/>
            <entry key="map key 03" value="map value 03"/>
         </map>
      </property>
   </bean>
           

我們可以在測試方法中擷取這些集合屬性,并周遊,以測試是否成功注入:

@Test
    public void instanceSpring(){
        //初始化Spring容器
        AbstractXmlApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
        IPersonService personService = (IPersonService) ctx.getBean("personService");
        System.out.println("=======set==========");
        for (String value : personService.getSet()) {
            System.out.println(value);
        }
        System.out.println("=======list==========");
        for (String value : personService.getList()) {
            System.out.println(value);
        }
        System.out.println("=======prop==========");
        for (Object key : personService.getProp().keySet()) {
            System.out.println("key:"+key+"="+personService.getProp().get(key));
        }
        System.out.println("=======map==========");
        for (Entry<String, String> entry : personService.getMap().entrySet()) {
            System.out.println(entry.getKey()+"= " +entry.getValue());
        }
        //ctx.close();
    }
           

運作結果:

Spring學習筆記04--spring如何裝配集合類型的屬性

繼續閱讀