Spring注入集合值

Axe

public interface Axe {
    
    
    public String chop();
}

Person

public interface Person {
    
    
    public void test();
}

SteelAxe

public class SteelAxe implements Axe
{
    
    
    @Override
    public String chop()
    {
    
    
        return "钢斧砍柴真快";
    }
}

**StoneAxe **

public class StoneAxe implements Axe
{
    
    
    @Override
    public String chop()
    {
    
    
        return "石斧砍柴好慢";
    }
}

**Chinese **

import java.util.*;
/**
 * Description:
 * <br/>网站: <a href="http://www.crazyit.org">疯狂Java联盟</a>
 * <br/>Copyright (C), 2001-2016, Yeeku.H.Lee
 * <br/>This program is protected by copyright laws.
 * <br/>Program Name:
 * <br/>Date:
 * @author  Yeeku.H.Lee [email protected]
 * @version  1.0
 */
public class Chinese implements Person
{
    
    
    // 下面是系列集合类型的成员变量
    private List<String> schools;
    private Map scores;
    private Map<String , Axe> phaseAxes;
    private Properties health;
    private Set axes;
    private String[] books;

    public Chinese()
    {
    
    
        System.out.println("Spring实例化主调bean:Chinese实例...");
    }

    // schools的setter方法
    public void setSchools(List schools)
    {
    
    
        this.schools = schools;
    }
    // scores的setter方法
    public void setScores(Map scores)
    {
    
    
        this.scores = scores;
    }
    // phaseAxes的setter方法
    public void setPhaseAxes(Map<String , Axe> phaseAxes)
    {
    
    
        this.phaseAxes = phaseAxes;
    }
    // health的setter方法
    public void setHealth(Properties health)
    {
    
    
        this.health = health;
    }
    // axes的setter方法
    public void setAxes(Set axes)
    {
    
    
        this.axes = axes;
    }
    // books的setter方法
    public void setBooks(String[] books)
    {
    
    
        this.books = books;
    }

    // 访问上面全部的集合类型的成员变量
    @Override
    public void test()
    {
    
    
        System.out.println(schools);
        System.out.println(scores);
        System.out.println(phaseAxes);
        System.out.println(health);
        System.out.println(axes);
        System.out.println(java.util.Arrays.toString(books));
    }
}

**MainTest **

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class MainTest {
    
    
    public static void main(String[] args) {
    
    
        ApplicationContext ctx = new
                ClassPathXmlApplicationContext("spring-config.xml");
        // 获取容器中Bean,并调用方法。
        Person p = ctx.getBean("chinese" , Person.class);
        p.test();
    }
}

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.xsd">
    <!-- 定义2个普通Axe Bean -->
    <bean id="stoneAxe" class="StoneAxe"/>
    <bean id="steelAxe" class="SteelAxe"/>
    <!-- 定义chinese Bean -->
    <bean id="chinese" class="Chinese">
        <property name="schools">
            <!-- 为调用setSchools()方法配置List集合作为参数值 -->
            <list>
                <!-- 每个value、ref、bean...都配置一个List元素 -->
                <value>小学</value>
                <value>中学</value>
                <value>大学</value>
            </list>
        </property>
        <property name="scores">
            <!-- 为调用setScores()方法配置Map集合作为参数值 -->
            <map>
                <!-- 每个entry配置一个key-value对 -->
                <entry key="数学" value="87"/>
                <entry key="英语" value="89"/>
                <entry key="语文" value="82"/>
            </map>
        </property>
        <property name="phaseAxes">
            <!-- 为调用setPhaseAxes()方法配置Map集合作为参数值 -->
            <map>
                <!-- 每个entry配置一个key-value对 -->
                <entry key="原始社会" value-ref="stoneAxe"/>
                <entry key="农业社会" value-ref="steelAxe"/>
            </map>
        </property>
        <property name="health">
            <!-- 为调用setHealth()方法配置Properties集合作为参数值 -->
            <props>
                <!-- 每个prop元素配置一个属性项,其中key指定属性名 -->
                <prop key="血压">正常</prop>
                <prop key="身高">175</prop>
            </props>
            <!--
            <value>
                pressure=normal
                height=175
            </value> -->
        </property>
        <property name="axes">
            <!-- 为调用setAxes()方法配置Set集合作为参数值 -->
            <set>
                <!-- 每个value、ref、bean..都配置一个Set元素 -->
                <value>普通的字符串</value>
                <bean class="SteelAxe"/>
                <ref bean="stoneAxe"/>
                <!-- 为Set集合配置一个List集合作为元素 -->
                <list>
                    <value>20</value>
                    <!-- 再次为List集合配置一个Set集合作为元素 -->
                    <set>
                        <value type="int">30</value>
                    </set>
                </list>
            </set>
        </property>
        <property name="books">
            <!-- 为调用setBooks()方法配置数组作为参数值 -->
            <list>
                <!-- 每个value、ref、bean...都配置一个数组元素 -->
                <value>疯狂Java讲义</value>
                <value>疯狂Android讲义</value>
                <value>轻量级Java EE企业应用实战</value>
            </list>
        </property>
    </bean>
</beans>

运行结果
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_41827511/article/details/105706136