IOC容器-Bean管理 集合类型属性注入

这篇博客介绍了如何在Spring框架中对Bean进行集合类型属性的注入,包括Array、Set、List和Map的注入,并展示了通过XML配置文件进行对象集合注入的示例。此外,还讲解了如何提取公共注入方法以及展示了使用util标签实现注入的实例。
摘要由CSDN通过智能技术生成

IOC容器-Bean管理 集合类型属性注入

之前的案例都是基本类型注入,下面演示Array、Set、Map、List如何做属性注入

  1. 创建类,包含Array、Set、Map、List类型成员
  2. 配置XML文档

创建测试类

package com.xjy.spring.collectType;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.test.context.TestConstructor;

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

public class CollectTypeDemo {
    private String[] Array;
    private List<String> List;
    private Map<String,String> stringMap;
    private Set<String> stringSet;

    public void setArray(String[] array) {
        Array = array;
    }

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

    public void setStringMap(Map<String, String> stringMap) {
        this.stringMap = stringMap;
    }

    public void setStringSet(Set<String> stringSet) {
        this.stringSet = stringSet;
    }
    public void testFun(){
        System.out.println(Array.toString());
        System.out.println(List);
        System.out.print(stringMap);
        System.out.println(stringSet);
    }

}

配置XML

<!--IOC-集合类型属性注入-->
    <!--创建类对象-->
    <bean id="collectTypeDemo" class="com.xjy.spring.collectType.CollectTypeDemo">
        <!--数组使用<array>标签嵌套<value>标签  <list>标签也可以-->
        <property name="array">
            <array>
                <value>Array数据1</value>
                <value>Array数据2</value>
                <value>Array数据3</value>
            </array>
        </property>
        <!--List使用<list>标签嵌套<value>标签-->
        <property name="list">
            <list>
                <value>List数据1</value>
                <value>List数据2</value>
                <value>List数据3</value>
            </list>
        </property>
        <!--map类型使用<map>标签嵌套<entry>标签,并使用entry标签的key属性和value属性分别为key和value注入属性值-->
        <property name="stringMap">
            <map>
                <entry key="JAVA" value="java"></entry>
                <entry key="PYTHON" value="python"></entry>
                <entry key="SWIFT" value="swift"></entry>
            </map>
        </property>
        <!--Set使用<set>标签嵌套<value>标签-->
        <property name="stringSet">
            <set>
                <value>Set数据1</value>
                <value>Set数据2</value>
                <value>Set数据3</value>
            </set>
        </property>
    </bean>

详细用法

  • Set、List、Array属性注入方式基本一致。都是用标签
  • Map方法因为同时包含Key和Value值,需要单独的entry标签并使用包含的key属性和value属性设置值

编写测试代码

public static void main(String[] args) {
        ApplicationContext context =
                new ClassPathXmlApplicationContext("SpringConfig.xml");
        CollectTypeDemo collect = 
                context.getBean("collectTypeDemo",CollectTypeDemo.class);
        collect.testFun();
        }

输出:

[Array数据1, Array数据2, Array数据3]
[List数据1, List数据2, List数据3]
{JAVA=java, PYTHON=python, SWIFT=swift}
[Set数据1, Set数据2, Set数据3]

进程已结束,退出代码0

进阶的用法

当集合类型为对象时,如何注入

上面的方法注入的类型都是基本类型集合,下面将演示如何对对象集合进行属性注入

示例

创建一个courses集合类,集合类型为一个自定义类Course
Course中包含一个String cName成员变量和对应的set方法

实现类

这里直接在上面的类中添加一个成员变量

//声明变量
private List<Course> courses;
//set方法
public void setCourses(java.util.List<Course> courses) {
        this.courses = courses;
    }

配置XML文件

首先创建两个用于测试的Course类对象

<!--对象集合类型参数测试-->
    <bean id="course1" class="com.xjy.spring.collectType.Course">
        <property name="cName" value="math"></property>
    </bean>
    <bean id="course2" class="com.xjy.spring.collectType.Course">
        <property name="cName" value="Java"></property>
    </bean>

编写集合类属性注入

<property name="courses">
    <list>
        <ref bean="course1"></ref>
        <ref bean="course2"></ref>
    </list>
</property>

采用外部Bean引用方式使用ref标签将属性值引入

  • ref bean:对象集合类型的对象标签

测试输出

[Array数据1, Array数据2, Array数据3]
[List数据1, List数据2, List数据3]
{JAVA=java, PYTHON=python, SWIFT=swift}
[Set数据1, Set数据2, Set数据3]
[Course{cName='math'}, Course{cName='Java'}]

进程已结束,退出代码0

提取类型注入方法

下面演示如何将集合类型属性注入方法提取出来以便重复使用

步骤

  1. 创建Book类,内包含一个List类型成员变量
  2. 配置XML文件公共方法为Book类对象赋值

实现类

Book类

package com.xjy.spring.collectType;

import java.util.List;

public class Book {
    List<String> bookName;

    public void setBookName(List<String> bookName) {
        this.bookName = bookName;
    }

    @Override
    public String toString() {
        return "Book{" +
                "bookName=" + bookName +
                '}';
    }
}

配置XML

若要提取方法,可使用util标签创建标签空间

先将util标签引入
在xml头部插入

xmlns:util="http://www.springframework.org/schema/util"

xsi:schemaLocation=""内插入

http://www.springframework.org/schema/util  http://www.springframework.org/schema/util/spring-util.xsd

引入util后编写公共注入方法

<util:list id="BookList">
    <value>Java</value>
    <value>Swift</value>
    <value>Python</value>
</util:list>

创建Book类对象并使用util定义的BookList空间

<bean id="collectBook" class="com.xjy.spring.collectType.Book">
    <property name="bookName" ref="BookList"></property>
</bean>

测试输出

Book{bookName=[Java, Swift, Python]}

进程已结束,退出代码0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JAVA小菜鸡223

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值