在 Spring中可以通过一组内置的 xml 标签(例如: <list>, <set> 或 <map>) 来配置集合属性.
配置 java.util.List 类型的属性, 需要指定 <list> 标签, 在标签里包含一些元素. 这些标签可以通过 <value> 指定简单的常量值, 通过 <ref> 指定对其他 Bean 的引用. 通过<bean> 指定内置 Bean 定义. 通过 <null/> 指定空元素. 甚至可以内嵌其他集合.
数组的定义和 List 一样, 都使用 <list>
配置 java.util.Set 需要使用 <set> 标签, 定义元素的方法与 List 一样.
Java.util.Map 通过 <map> 标签定义, <map> 标签里可以使用多个 <entry> 作为子标签. 每个条目包含一个键和一个值.
必须在 <key> 标签里定义键
因为键和值的类型没有限制, 所以可以自由地为它们指定 <value>, <ref>, <bean> 或 <null> 元素.
可以将 Map 的键和值作为 <entry> 的属性定义: 简单常量使用 key 和 value 来定义; Bean 引用通过 key-ref 和 value-ref 属性定义
使用 <props> 定义 java.util.Properties, 该标签使用多个 <prop> 作为子标签. 每个 <prop> 标签必须定义 key 属性.
定义Java类
package xyz.huning.spring4.di; import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.Properties; import java.util.Set; public class Student { private int id; private String[] teacherNameArray; private List<String> teacherNameList; private Set<String> teacherNameSet; private Map<Integer,String> teacherNameMap; private Teacher[] teacherArray; private List<Teacher> teacherList; private Set<Teacher> teacherSet; private Map<String,Teacher> teacherMap; private Properties properties; public int getId() { return id; } public void setId(int id) { this.id = id; } public String[] getTeacherNameArray() { return teacherNameArray; } public void setTeacherNameArray(String[] teacherNameArray) { this.teacherNameArray = teacherNameArray; } public List<String> getTeacherNameList() { return teacherNameList; } public void setTeacherNameList(List<String> teacherNameList) { this.teacherNameList = teacherNameList; } public Set<String> getTeacherNameSet() { return teacherNameSet; } public void setTeacherNameSet(Set<String> teacherNameSet) { this.teacherNameSet = teacherNameSet; } public Map<Integer, String> getTeacherNameMap() { return teacherNameMap; } public void setTeacherNameMap(Map<Integer, String> teacherNameMap) { this.teacherNameMap = teacherNameMap; } public Teacher[] getTeacherArray() { return teacherArray; } public void setTeacherArray(Teacher[] teacherArray) { this.teacherArray = teacherArray; } public List<Teacher> getTeacherList() { return teacherList; } public void setTeacherList(List<Teacher> teacherList) { this.teacherList = teacherList; } public Set<Teacher> getTeacherSet() { return teacherSet; } public void setTeacherSet(Set<Teacher> teacherSet) { this.teacherSet = teacherSet; } public Map<String, Teacher> getTeacherMap() { return teacherMap; } public void setTeacherMap(Map<String, Teacher> teacherMap) { this.teacherMap = teacherMap; } public Properties getProperties() { return properties; } public void setProperties(Properties properties) { this.properties = properties; } @Override public String toString() { return "Student [id=" + id + ", teacherNameArray=" + Arrays.toString(teacherNameArray) + ", teacherNameList=" + teacherNameList + ", teacherNameSet=" + teacherNameSet + ", teacherNameMap=" + teacherNameMap + ", teacherArray=" + Arrays.toString(teacherArray) + ", teacherList=" + teacherList + ", teacherSet=" + teacherSet + ", teacherMap=" + teacherMap + ", properties=" + properties + "]"; } }
package xyz.huning.spring4.di; public class Teacher { private int id; private String name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "Teacher [id=" + id + ", name=" + name + "]"; } }
<!--配置一个 bean--> <bean id="teacher1" class="xyz.huning.spring4.di.Teacher"> <property name="id" value="1"></property> <property name="name" value="LiJun"></property> </bean> <!--配置一个 bean--> <bean id="teacher2" class="xyz.huning.spring4.di.Teacher"> <property name="id" value="2"></property> <property name="name" value="WangTian"></property> </bean> <!--配置一个 bean--> <bean id="teacher3" class="xyz.huning.spring4.di.Teacher"> <property name="id" value="3"></property> <property name="name" value="ChenXin"></property> </bean> <!--配置一个 bean--> <!--基本类型的数组--> <bean id="student1" class="xyz.huning.spring4.di.Student"> <property name="id" value="1"></property> <property name="teacherNameArray"> <array> <value>LiJun</value> <value>WangTian</value> <value>ChenXin</value> </array> </property> </bean> <!--配置一个 bean--> <!--基本类型的List--> <bean id="student2" class="xyz.huning.spring4.di.Student"> <property name="id" value="2"></property> <property name="teacherNameList"> <list> <value>LiJun</value> <value>WangTian</value> <value>ChenXin</value> </list> </property> </bean> <!--配置一个 bean--> <!--基本类型的Set--> <bean id="student3" class="xyz.huning.spring4.di.Student"> <property name="id" value="3"></property> <property name="teacherNameSet"> <set> <value>LiJun</value> <value>WangTian</value> <value>ChenXin</value> </set> </property> </bean> <!--配置一个 bean--> <!--基本类型的Map--> <bean id="student4" class="xyz.huning.spring4.di.Student"> <property name="id" value="4"></property> <property name="teacherNameMap"> <map> <entry key="1" value="LiJun"></entry> <entry key="2" value="WangTian"></entry> <entry key="3" value="ChenXin"></entry> </map> </property> </bean> <!--配置一个 bean--> <!--对象类型的数组--> <bean id="student5" class="xyz.huning.spring4.di.Student"> <property name="id" value="5"></property> <property name="teacherArray"> <array> <ref bean="teacher1"/> <ref bean="teacher2"/> <ref bean="teacher3"/> </array> </property> </bean> <!--配置一个 bean--> <!--对象类型的List--> <bean id="student6" class="xyz.huning.spring4.di.Student"> <property name="id" value="6"></property> <property name="teacherList"> <list> <ref bean="teacher1"/> <ref bean="teacher2"/> <ref bean="teacher3"/> </list> </property> </bean> <!--配置一个 bean--> <!--对象类型的Set--> <bean id="student7" class="xyz.huning.spring4.di.Student"> <property name="id" value="7"></property> <property name="teacherSet"> <set> <ref bean="teacher1"/> <ref bean="teacher2"/> <ref bean="teacher3"/> </set> </property> </bean> <!--配置一个 bean--> <!--对象类型的Map--> <bean id="student8" class="xyz.huning.spring4.di.Student"> <property name="id" value="8"></property> <property name="teacherMap"> <map> <entry key="1" value-ref="teacher1"></entry> <entry key="2" value-ref="teacher2"></entry> <entry key="3" value-ref="teacher3"></entry> </map> </property> </bean> <!--配置一个 bean--> <!--Properties类型--> <bean id="student9" class="xyz.huning.spring4.di.Student"> <property name="id" value="9"></property> <property name="properties"> <props> <prop key="name">huning</prop> <prop key="gender">male</prop> <prop key="length">170</prop> </props> </property> </bean>
相关推荐
当我们处理Spring配置时,可以通过XML或Java配置方式来声明集合属性。例如,在XML配置中,可以这样定义一个包含List类型的属性: ```xml <value>value1 <value>value2 <value>value3 ``` 在这个例子...
总之,Spring的集合属性注入为开发者提供了极大的灵活性,能够方便地管理和配置Bean之间的依赖关系。无论是简单的列表还是复杂的Map结构,都能轻松应对。通过理解并熟练掌握这些注入机制,你可以更有效地构建和维护...
如果集合元素的bean名称与集合属性的类型匹配,Spring会使用基于名称的装配。例如,如果集合元素是`List<Address>`,且存在多个`Address`类型的bean,它们的名称分别与集合元素的类型匹配,如`homeAddress`、`work...
- **<list>/<map>/<set>/<props>`元素**:用于配置集合类型属性,如List、Map、Set和Properties。 #### 总结 Spring的`<beans>`和`<bean>`元素及其属性提供了强大的配置能力,使开发者能够灵活地定义、配置和管理...
在Spring配置文件中,我们可以定义bean并为其指定一个唯一的ID。通过这个ID,我们可以在其他bean的配置中引用它,实现bean之间的依赖关系。例如,`<bean id="exampleBean" class="com.example.ExampleClass" />`定义...
《Spring配置文件模板详解》 在Java开发领域,Spring框架以其强大的依赖注入(Dependency Injection,简称DI)和面向切面编程(Aspect-Oriented Programming,简称AOP)能力,成为了企业级应用开发的重要选择。而...
首先,Spring支持通过XML配置文件进行集合类型的装配。在XML配置中,我们可以使用`<list>`、`<set>`、`<map>`和`<props>`标签来定义不同的集合类型。例如,如果我们要注入一个包含多个bean的List,可以这样写: ```...
在Spring框架中,集合装配是将一组对象注入到如List、Set、Map等集合类型属性中的过程。...通过Spring的依赖注入机制,我们可以轻松地管理集合属性,提高代码的可读性和可维护性。这正是Spring框架的核心价值之一。
在Spring框架中,属性注入是核心特性之一,它允许我们通过依赖注入(Dependency Injection, DI)来管理对象的属性,而不是让对象自行创建或查找它们的依赖。这有助于提高代码的可测试性、可维护性和解耦性。下面将...
- `props`、`list`、`map`: 支持配置集合类型属性,如`people`、`someList`和`someMap`。 总的来说,Spring的配置文件是实现IOC和AOP的关键,通过合理的配置,可以实现对象的管理、依赖注入以及面向切面的编程,...
在这个"Spring Security2配置"的主题中,我们将深入探讨如何配置Spring Security来保护我们的应用程序,以及它的一些核心概念。 首先,让我们理解Spring Security的基本组件。`Users.java`、`Roles.java`暗示了用户...
【Spring 框架基本知识及配置使用】 Spring 框架是Java开发中的一个核心框架,由Rod Johnson创建,最初源于《Expert One on One ...了解并掌握Spring的基本知识和配置使用,对于Java开发者来说是必不可少的技能之一。
以下将详细介绍如何在SpringCloud中配置和使用Redis集群。 首先,你需要了解Redis集群的基本概念。Redis集群通过数据分片(Sharding)技术,将数据分散存储在多个节点上,每个节点只负责一部分数据,从而实现数据的...
总结来说,Spring 2.0的集合配置是实现依赖注入的强大工具,它允许开发者轻松管理Bean的集合属性,提高了代码的可读性和可维护性。通过`CollectionDemo`实例,我们可以深入理解和实践这些概念,从而更好地掌握Spring...
了解这些装配方法后,我们可以在Spring应用中更加灵活地管理和配置集合类型的属性。在实际项目中,根据需求选择合适的装配方式,既能保证代码的简洁性,也能确保组件间的依赖关系得到妥善处理。 这篇博客可能还涵盖...
除了简单bean,还可以配置复杂结构,如注入其他bean、集合类型、属性值等。 Spring框架包含多个模块,这些模块分别对应不同的包。例如: 1. **Core Container**(核心容器):包括Core、Beans、Context和Expression...
SpringBoot是一款由Pivotal团队开发的框架,它旨在简化Spring应用的初始...提供的`SpringBoot官网基本属性集合(英文).txt`和`SpringBoot官网基本属性集合(中文).txt`文件应该包含了这些详细信息,供开发者查阅和参考。
在Spring框架中,集合配置是将Java集合对象如List、Set和Map与IoC容器集成的关键部分。这些配置允许我们动态地注入集合数据,为应用提供灵活的数据结构。本篇文章将详细探讨如何在Spring中配置这三种类型的集合。 ...
《Spring Core 3.2.5 集合包详解》 Spring Core 是 Spring 框架的基础,它是整个 Spring 家族的核心组件,为其他模块提供了基础支持。3.2.5 版本是 Spring Core 的一个重要里程碑,它包含了多个关键的组件和功能,...
#### 一、Spring配置文件根元素`<beans>`解析 - **功能概述**:`<beans>`是Spring配置文件的根元素,用来包含一个或多个`<bean>`元素,用于定义Spring容器管理的各种Bean。 #### 二、`<bean>`元素详解 - **基础...