Spring学习笔记1.2--集合注入

Spring集合注入:

在以下每一个类都创建一个测试类用于运行测试,用

Demo:

public class Test_Test{
    public static void main(String[] args) {
        ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
        Test test = ctx.getBean("test",Test.class);
        System.out.println(test);
    }
}

1.注入数组数据:

Demo:创建Test类

public class Test{
    private String msg[];
    private int data[];

    public String[] getMsg() {
        return msg;
    }

    public void setMsg(String[] msg) {
        this.msg = msg;
    }

    public int[] getData() {
        return data;
    }

    public void setData(int[] data) {
        this.data = data;
    }

    @Override
    public String toString() {
        return "msg=" + Arrays.toString(this.msg)+",data="+Arrays.toString(this.data);
    }
}

可以接收两个数组的对象信息, 在使用数组数据的时候都设置了对应的数据类型。 

<bean id="test" class="com.project.Test.Test"><!—路径以自己的为准-->
    <property name="data">
        <array value-type="java.lang.Integer">
            <value>10</value>
            <value>20</value>
            <value>30</value>
        </array>
    </property>
    <property name="msg">
        <array value-type="java.lang.String">
            <value>SpringBoot</value>
            <value>Spring</value>
            <value>SpringMVC</value>
        </array>
    </property>
</bean>

  点击Test_Test测试类运行结果:

2.使用List集合操作数组对象:

public class Item2 {
    private List<String> msg;
    public void setMsg(List<String> msg) {
        this.msg = msg;
    }
    public List<String> getMsg() {
        return msg;
    }
    @Override
    public String toString() {
        return "msg= "+this.msg;
    }
}

在applicationContext.xml配置文件中添加item2对象,设置数组的类型和值 

<bean id="item2" class="com.project.Demo2.Item2">
    <property name="msg">
        <array value-type="java.lang.String">
            <value>"Java工程师"</value>
            <value>"信息安全工程师"</value>
        </array>
    </property>
</bean>

Set集合注入会出去重复的值,操作方法和List是一样的

ItemTest类运行查看结果

public class TestItem2 {
    public static void main(String[] args) {
        ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
        Item2 item2 = ctx.getBean("item2",Item2.class);
        System.out.println(item2);
    }
}

3.注入Map集合

以上一个类为操作,使用Map创建属性: 

public class Item2 {
    private Map<Integer,String> msg;
    public Map<Integer, String> getMsg() {
        return msg;
    }
    public void setMsg(Map<Integer, String> msg) {
        this.msg = msg;
    }    
}

在bean对象里面设置Map属性的键值:

<bean id="item2" class="com.project.Demo2.Item2">
    <property name="msg">
        <map key-type="java.lang.Integer" value-type="java.lang.String">
            <entry key="1" value="Spring"></entry>
            <entry key="2" value="MyBatis"></entry>
        </map>
    </property>
</bean>

4.Properties注入

集合注入在开发配置文件的编写过程中最常见的是Properties类型。

创建Properties类型的属性,进行初始化:

public class Item2 {
    //只能设置String类型的数据
    private Properties msg;
    public Properties getMsg() {
        return msg;
    }
    public void setMsg(Properties msg) {
        this.msg = msg;
    }
    @Override
    public String toString() {
        return "msg= "+this.msg;
    }
}

xml文件设置Properties类型的键值:

    <bean id="item2" class="com.project.Demo2.Item2">
        <property name="msg">
            <props>
                <prop key="java">www.java.com</prop>
                <prop key="spring">www.spring.cn</prop>
            </props>
        </property>
    </bean>

点击ItemTest测试类运行结果: 

6.Spring实现文件内部的引用定义: 

  创建Dept部门类,实现对Employee员工类内部属性的引用:


public class Detp {
    private int DetpId;
    private String DetpName;
    private List<Employee> employees;
    public List<Employee> getEmployees() {
        return employees;
    }
    public void setEmployees(List<Employee> employees) {
        this.employees = employees;
    }

    public int getDetpId() {
        return DetpId;
    }
    public String getDetpName() {
        return DetpName;
    }
    public void setDetpId(int detpId) {
        DetpId = detpId;
    }
    public void setDetpName(String detpName) {
        DetpName = detpName;
    }
    @Override
    public String toString() {
        return "部门编号: "+this.DetpId+",部门名称: "+this.DetpName+",雇员信息: "+this.employees;
    }
}

然后通过xml配置文件描述以上的结构关系:

<bean id="dept" class="com.project.Test.Detp">
    <property name="detpName" value="开发部"/>
    <property name="detpId" value="1"/>
    <property name="employees">
	<!--指定数据类型为Employee类-->
        <list value-type="com.project.Test.Employee">	
    <!--使用反射调用员工对象--> 
            <ref bean="empA"/>		
            <ref bean="empB"/>
            <ref bean="empC"/>
        </list>
    </property>
</bean>
<!--设置3个不同的bean对象-->
<bean id="empA" class="com.project.Test.Employee">
    <property name="emp_id" value="15811"/>
    <property name="emp_name" value="EmployeeA"/>
    <!--ref引用其他Bean对象的内容-->
    <property name="detp" ref="dept"/>
</bean>
<bean id="empB" class="com.project.Test.Employee">
    <property name="emp_id" value="15812"/>
    <property name="emp_name" value="EmployeeB"/>
    <property name="detp" ref="dept"/>
</bean>
<bean id="empC" class="com.project.Test.Employee">
    <property name="emp_id" value="15813"/>
    <property name="emp_name" value="EmployeeC"/>
    <property name="detp" ref="dept"/>
</bean>

点击Employee的测试类运行结果:

发布了58 篇原创文章 · 获赞 31 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/qq_37504771/article/details/103154234