首页 > 代码库 > Spring配置集合、Map等

Spring配置集合、Map等

下面的例子展示了如何注入

    List – <list/>
    Set – <set/>
    Map – <map/>
    Properties – <props/>

Spring beans

import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
 
public class Customer
{
    private List<Object> lists;
    private Set<Object> sets;
    private Map<Object, Object> maps;
    private Properties pros;
 
    //...
}

  配置文件:
<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-2.5.xsd">
 
    <bean id="CustomerBean" class="com.mkyong.common.Customer">
 
        <!-- java.util.List -->
        <property name="lists">
            <list>
                <value>1</value>
                <ref bean="PersonBean" />
                <bean class="com.mkyong.common.Person">
                    <property name="name" value="http://www.mamicode.com/mkyongList" />
                    <property name="address" value="http://www.mamicode.com/address" />
                    <property name="age" value="http://www.mamicode.com/28" />
                </bean>
            </list>
        </property>
 
        <!-- java.util.Set -->
        <property name="sets">
            <set>
                <value>1</value>
                <ref bean="PersonBean" />
                <bean class="com.mkyong.common.Person">
                    <property name="name" value="http://www.mamicode.com/mkyongSet" />
                    <property name="address" value="http://www.mamicode.com/address" />
                    <property name="age" value="http://www.mamicode.com/28" />
                </bean>
            </set>
        </property>
 
        <!-- java.util.Map -->
        <property name="maps">
            <map>
                <entry key="Key 1" value="http://www.mamicode.com/1" />
                <entry key="Key 2" value-ref="PersonBean" />
                <entry key="Key 3">
                    <bean class="com.mkyong.common.Person">
                        <property name="name" value="http://www.mamicode.com/mkyongMap" />
                        <property name="address" value="http://www.mamicode.com/address" />
                        <property name="age" value="http://www.mamicode.com/28" />
                    </bean>
                </entry>
            </map>
        </property>
 
        <!-- java.util.Properties -->
        <property name="pros">
            <props>
                <prop key="admin">admin@nospam.com</prop>
                <prop key="support">support@nospam.com</prop>
            </props>
        </property>
 
    </bean>
 
    <bean id="PersonBean" class="com.mkyong.common.Person">
        <property name="name" value="http://www.mamicode.com/mkyong1" />
        <property name="address" value="http://www.mamicode.com/address 1" />
        <property name="age" value="http://www.mamicode.com/28" />
    </bean>
 
</beans>

运行:

public class App
{
    public static void main( String[] args )
    {
        ApplicationContext context = new ClassPathXmlApplicationContext("SpringBeans.xml");
 
        Customer cust = (Customer)context.getBean("CustomerBean");
        System.out.println(cust);
 
    }
}

  我们也可以使用ListFactoryBean。The ‘ListFactoryBean‘ class provides developer a way to create a concrete List collection class (ArrayList and LinkedList) in Spring’s bean configuration file.

    
<bean id="CustomerBean" class="com.mkyong.common.Customer">
        <property name="lists">
            <bean class="org.springframework.beans.factory.config.ListFactoryBean">
                <property name="targetListClass">
                    <value>java.util.ArrayList</value>
                </property>
                <property name="sourceList">
                    <list>
                        <value>1</value>
                        <value>2</value>
                        <value>3</value>
                    </list>
                </property>
            </bean>
        </property>
    </bean>

  或者:加入:xmlns:util="http://www.springframework.org/schema/util"然后就可以:

<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-2.5.xsd
    http://www.springframework.org/schema/util
    http://www.springframework.org/schema/util/spring-util-2.5.xsd">
 
    <bean id="CustomerBean" class="com.mkyong.common.Customer">
        <property name="lists">
            <util:list list-class="java.util.ArrayList">
                <value>1</value>
                <value>2</value>
                <value>3</value>
            </util:list>
        </property>
    </bean>
 
</beans>

 
SetFactoryBean The ‘SetFactoryBean‘ class provides developer a way to create a concrete Set collection (HashSet and TreeSet) in Spring’s bean configuration file.

set和上面的一样:
    
<bean id="CustomerBean" class="com.mkyong.common.Customer">
        <property name="sets">
            <util:set set-class="java.util.HashSet">
                <value>1</value>
                <value>2</value>
                <value>3</value>
            </util:set>
        </property>
    </bean>

MapFactoryBean The ‘MapFactoryBean‘ class provides developer a way to create a concrete Map collection class (HashMap and TreeMap) in Spring’s bean configuration file.

map也一样:

    
<bean id="CustomerBean" class="com.mkyong.common.Customer">
        <property name="maps">
            <util:map map-class="java.util.HashMap">
                <entry key="Key1" value="http://www.mamicode.com/1" />
                <entry key="Key2" value="http://www.mamicode.com/2" />
                <entry key="Key3" value="http://www.mamicode.com/3" />
            </util:map>
        </property>
    </bean>

Spring配置集合、Map等