Spring深入浅出(六),依赖注入,注入集合(含注入 Bean 引用)

本文内容纲要:Spring深入浅出(六),依赖注入,注入集合(含注入 Bean 引用)

前面已经讲解如何使用 value 属性来配置基本数据类型和在 bean 配置文件中使用<property>标签的 ref 属性来配置对象引用。现在如果想传递多个值,如 Java Collection 类型 List、Set、Map 和 Properties,应该怎么做?

Spring 提供了四种类型的集合的配置元素,如下所示:

标签说明
<list>用于注入 list 类型的值,允许重复
<set>用于注入 set 类型的值,不允许重复
<map>用于注入 key-value 的集合,其中 key-value 可以是任意类型
<props>用于注入 key-value 的集合,其中 key-value 都是字符串类型

一、创建CollectionTest类

package com.clzhang.spring.demo;

import java.util.*;

public class CollectionTest {

String[] strings;

List addressList;

Set addressSet;

Map addressMap;

Properties addressProp;

// 存放数组

public String[] getStrings() {

System.out.println("Array Elements :" + strings);

return strings;

}

public void setStrings(String[] strings) {

this.strings = strings;

}

// 存放List

public void setAddressList(List addressList) {

this.addressList = addressList;

}

public List getAddressList() {

System.out.println("List Elements :" + addressList);

return addressList;

}

// 存放Set

public void setAddressSet(Set addressSet) {

this.addressSet = addressSet;

}

public Set getAddressSet() {

System.out.println("Set Elements :" + addressSet);

return addressSet;

}

// 存放Map

public void setAddressMap(Map addressMap) {

this.addressMap = addressMap;

}

public Map getAddressMap() {

System.out.println("Map Elements :" + addressMap);

return addressMap;

}

// 存放Prop

public void setAddressProp(Properties addressProp) {

this.addressProp = addressProp;

}

public Properties getAddressProp() {

System.out.println("Property Elements :" + addressProp);

return addressProp;

}

}

二、创建主程序

package com.clzhang.spring.demo;

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;

public class MainApp {

public static void main(String[] args) {

ApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml");

CollectionTest jc = (CollectionTest) context.getBean("collectionTest");

jc.getStrings();

jc.getAddressList();

jc.getAddressSet();

jc.getAddressMap();

jc.getAddressProp();

}

}

三、创建配置文件

<?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-3.0.xsd">

<!-- Definition -->

<bean id="address1" class="com.clzhang.spring.demo.Address1" />

<bean id="collectionTest"

class="com.clzhang.spring.demo.CollectionTest">

<property name="strings">

<list>

<value>印度</value>

<value>日本</value>

<value>中国</value>

<value>中国</value>

</list>

</property>

<property name="addressList">

<list>

<value>印度</value>

<value>日本</value>

<value>中国</value>

<value>中国</value>

<ref bean="address1" />

</list>

</property>

<property name="addressSet">

<set>

<value>印度</value>

<value>日本</value>

<value>中国</value>

<value>中国</value>

<ref bean="address1" />

</set>

</property>

<property name="addressMap">

<map>

<entry key="1" value="印度" />

<entry key="2" value="日本" />

<entry key="3" value="中国" />

<entry key="4" value="中国" />

<entry key="5" value-ref="address1" />

</map>

</property>

<property name="addressProp">

<props>

<prop key="one">印度</prop>

<prop key="two">日本</prop>

<prop key="three">中国</prop>

<prop key="four">中国</prop>

</props>

</property>

</bean>

</beans>

四、创建注入Bean

package com.clzhang.spring.demo;

public class Address1 {

public String toString() {

return "地址一";

}

}

五、运行

Array Elements :[Ljava.lang.String;@45820e51

List Elements :[印度, 日本, 中国, 中国, 地址一]

Set Elements :[印度, 日本, 中国, 地址一]

Map Elements :{1=印度, 2=日本, 3=中国, 4=中国, 5=地址一}

Property Elements :{two=日本, one=印度, three=中国, four=中国}

本文参考:

https://www.w3cschool.cn/wkspring/kp5i1ico.html

http://c.biancheng.net/spring/inject-collection.html

本文内容总结:Spring深入浅出(六),依赖注入,注入集合(含注入 Bean 引用)

原文链接:https://www.cnblogs.com/nayitian/p/15001672.html

以上是 Spring深入浅出(六),依赖注入,注入集合(含注入 Bean 引用) 的全部内容, 来源链接: utcz.com/z/296022.html

回到顶部