[Spring5]IOC容器_Bean管理XML方式_注入集合类型属性

Posted 唐火

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Spring5]IOC容器_Bean管理XML方式_注入集合类型属性相关的知识,希望对你有一定的参考价值。

xml注入集合属性

1.注入数组类型属性

2.注入List集合类型属性

3.注入Map集合类型属性

(1)创建类,定义数组,list,map,set类型属性,生成对应set方法

package com.atguigu.collectiontype;

import java.util.List;
import java.util.Map;
import java.util.Set;

public class Stu 
    //1.数组类型属性
    private String[] courses;

    //2.List集合类型属性
    private List<String> list;

    //3.map集合类型属性
    private Map<String,String> maps;

    //4.set集合类型属性
    private Set<String> sets;

    public void setSets(Set<String> sets) 
        this.sets = sets;
    

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

    public void setMaps(Map<String, String> maps) 
        this.maps = maps;
    

    public void setCourses(String[] courses)
    
        this.courses = courses;
    
    
    public void test()
    
        System.out.println(Arrays.toString(courses));
        System.out.println(list);
        System.out.println(maps);
        System.out.println(sets);
    



(2)在spring配置文件中进行配置

<?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">


    <!--1.集合类型属性注入-->
    <bean id = "stu" class = "com.atguigu.collectiontype.Stu">
        <!--数组类型属性注入-->
        <property name="courses">
            <array>
                <value>java课程</value>
                <value>数据库课程</value>

            </array>
        </property>

        <!--list类型属性注入-->
        <property name="list">
            <list>
                <value>张三</value>
                <value>小三</value>
            </list>
        </property>
        
        <!--map类型属性注入-->
        <property name="maps">
            <map>
                <entry key = "JAVA" value="java">

                </entry>
                <entry key = "php" value="php">

                </entry>
            </map>
        </property>

        <!--set类型属性注入-->
        <property name="sets">
            <set>
                <value>mysql</value>
                <value>Redis</value>
            </set>
        </property>

    </bean>



</beans>
package com.atguigu.test;

import com.atguigu.collectiontype.Stu;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class testCollection 

    @Test
    public void testCollection()
    
        ApplicationContext context = new ClassPathXmlApplicationContext("bean5.xml");
        Stu stu = context.getBean("stu", Stu.class);
        stu.test();

    

在集合里面设置对象类型值

package com.atguigu.collectiontype;

public class Course 
    private String cname;//课程名称

    public void setCname(String cname) 
        this.cname = cname;
    

    @Override
    public String toString() 
        return "Course" +
                "cname='" + cname + '\\'' +
                '';
    


package com.atguigu.collectiontype;

import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Set;

public class Stu 
    //1.数组类型属性
    private String[] courses;

    //2.List集合类型属性
    private List<String> list;

    //3.map集合类型属性
    private Map<String,String> maps;

    //4.set集合类型属性
    private Set<String> sets;

    //学生所学多门课程
    private List<Course> courseList;

    public void setCourseList(List<Course> courseList) 
        this.courseList = courseList;
    

    public void setSets(Set<String> sets) 
        this.sets = sets;
    

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

    public void setMaps(Map<String, String> maps) 
        this.maps = maps;
    

    public void setCourses(String[] courses)
    
        this.courses = courses;
    



    public void test()
    
        System.out.println(Arrays.toString(courses));
        System.out.println(list);
        System.out.println(maps);
        System.out.println(sets);
        System.out.println(courseList);
    





<?xml version="1.0" encoding="UTF-8"?>
<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.xsd http://www.springframework.org/schema/util https://www.springframework.org/schema/util/spring-util.xsd">


    <!--1.集合类型属性注入-->
    <bean id = "stu" class = "com.atguigu.collectiontype.Stu">
        <!--数组类型属性注入-->
        <property name="courses">
            <array>
                <value>java课程</value>
                <value>数据库课程</value>

            </array>
        </property>

        <!--list类型属性注入-->
        <property name="list">
            <list>
                <value>张三</value>
                <value>小三</value>
            </list>
        </property>
        
        <!--map类型属性注入-->
        <property name="maps">
            <map>
                <entry key = "JAVA" value="java">

                </entry>
                <entry key = "PHP" value="php">

                </entry>
            </map>
        </property>

        <!--set类型属性注入-->
        <property name="sets">
            <set>
                <value>MySQL</value>
                <value>Redis</value>
            </set>
        </property>

        <!--注入list集合类型,值是对象-->
        <property name="courseList">
            <list>
                <ref bean="course1"></ref>
                <ref bean = "course2"></ref>
            </list>
        </property>

    </bean>

    <!--创建多个course对象-->
    <bean id = "course1" class = "com.atguigu.collectiontype.Course">
        <property name="cname" value="Spring5框架">
            
        </property>
        
        
    </bean>

    <bean id = "course2" class = "com.atguigu.collectiontype.Course">
        <property name="cname" value="MySql5框架">

        </property>


    </bean>
    
    

</beans>

测试:

package com.atguigu.test;
import com.atguigu.collectiontype.Stu;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class testCollection 

    @Test
    public void testCollection()
    
        ApplicationContext context = new ClassPathXmlApplicationContext("bean5.xml");
        Stu stu = context.getBean("stu", Stu.class);
        stu.test();

    

把集合注入部分提取出来

(1)在spring配置文件中引入名称空间util

<?xml version="1.0" encoding="UTF-8"?>
<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.xsd
      http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">
    
</beans>

(2)使用util标签完成list集合注入提取

package com.atguigu.spring.collectiontype;

import java.util.List;

public class Book 
    private List<String> list;
    public void setList(List<String> list)
    
        this.list = list;
    

    public void test()
    
        System.out.println(list);
    


<?xml version="1.0" encoding="UTF-8"?>
<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.xsd
      http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">

    <!--1.提取list集合类型属性注入-->
    <util:list id = "bookList">
        <value>易筋经</value>
        <value>九阴真经</value>
        <value>九阳神功</value>
    </util:list>

    <!--2.提取list集合类型属性注入使用-->
    <bean id = "book" class = "com.atguigu.spring.collectiontype.Book">
        <property name="list" ref = "bookList">

        </property>
    </bean>


</beans>

测试:

package com.atguigu.spring.test;

import com.atguigu.spring.collectiontype.Book;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class testBook 

    @Test
    public void testCollection()
    
        ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
        Book book = context.getBean("book", Book.class);
        book.test();
    



以上是关于[Spring5]IOC容器_Bean管理XML方式_注入集合类型属性的主要内容,如果未能解决你的问题,请参考以下文章

[Spring5]IOC容器_Bean管理XML方式_注入其他类型属性

[Spring5]IOC容器_Bean管理XML方式_外部属性文件

[Spring5]IOC容器_Bean管理XML方式_创建对象_set注入属性and有参构造注入属性

[Spring5]IOC容器_Bean管理XML方式_注入集合类型属性

[Spring5]IOC容器_Bean管理注解方式_完全注解开发

Spring5——IOC操作Bean管理(基于xml文件)