Spring 中如何为Bean注入集合呢?

2023-10-30

转自:

Spring 中如何为Bean注入集合呢?

下文讲述Spring中为Bean注入集合的方法分享,如下所示:

常见的集合类型有:
List、Set、Map 和 properties


标签

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

例:

  1. 创建SpringDemo 项目
  2. 在src目录下创建 com.java265 包
  3. 添加相应的 jar 包,可以查看我的第一个Spring程序
  4. 在 com.java265 包下创建 JavaCollection、Man 和 MainApp 类
  5. 在 src 目录下创建 Spring 配置文件 Beans.xml
  6. 运行 SpringDemo 项目

JavaCollection 类

package com.java265;
import java.util.*;
public class JavaCollection {
    List manList;
    Set manSet;
    Map manMap;
    Properties manProp;
    public void setManList(List manList) {
        this.manList = manList;
    }
    public List getManList() {
        System.out.println("List Elements :" + manList);
        return manList;
    }
    public void setManSet(Set manSet) {
        this.manSet = manSet;
    }
    public Set getManSet() {
        System.out.println("Set Elements :" + manSet);
        return manSet;
    }
    public void setManMap(Map manMap) {
        this.manMap = manMap;
    }
    public Map getManMap() {
        System.out.println("Map Elements :" + manMap);
        return manMap;
    }
    public void setManProp(Properties manProp) {
        this.manProp = manProp;
    }
    public Properties getManProp() {
        System.out.println("Property Elements :" + manProp);
        return manProp;
    }
}

MainApp 类

package com.java265;
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");
        JavaCollection jc = (JavaCollection) context.getBean("javaCollection");
        jc.getManList();
        jc.getManSet();
        jc.getManMap();
        jc.getManProp();
    }
}

Beans.xml 配置文件

<?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">
    <bean id="javaCollection" class="com.java265.JavaCollection">
        <property name="manList">
            <list>
                <value>java265爱好者</value>
                <value>百度</value>
                <value>java265中文站</value>
                <value>java265中文站</value>
            </list>
        </property>
        <property name="manSet">
            <set>
                <value>java265爱好者</value>
                <value>百度</value>
                <value>java265中文站</value>
                <value>java265中文站</value>
            </set>
        </property>
        <property name="manMap">
            <map>
                <entry key="1" value="java265爱好者" />
                <entry key="2" value="百度" />
                <entry key="3" value="java265中文站" />
                <entry key="4" value="java265中文站" />
            </map>
        </property>
        <property name="manProp">
            <props>
                <prop key="one">java265爱好者</prop>
                <prop key="one">java265爱好者</prop>
                <prop key="two">百度</prop>
                <prop key="three">java265中文站</prop>
                <prop key="four">java265中文站</prop>
            </props>
        </property>
    </bean>
</beans>

运行结果-----
List Elements :[java265爱好者, 百度, java265中文站, java265中文站]
Set Elements :[java265爱好者, 百度, java265中文站]
Map Elements :{1=java265爱好者, 2=百度, 3=java265中文站, 4=java265中文站}
Property Elements :{two=百度, one=java265爱好者, three=java265中文站, four=java265中文站}

注入Bean引用
也可以在集合元素中注入 Bean

<!--?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">
    <bean class="..." id="...">
        <property name="manList">
            <list>
                <ref bean="man1">
                <ref bean="man2">
                <value>java265爱好者</value>
            </ref></ref></list>
        </property>
        <property name="manSet">
            <set>
                <ref bean="man1">
                <ref bean="man2">
                <value>java265爱好者</value>
            </ref></ref></set>
        </property>
        <property name="manMap"><map>
                <entry key="one" value="java265爱好者">
                <entry key="two" value-ref="man1">
                <entry key="three" value-ref="man2">
            </entry></entry></entry></map>
        </property>
    </bean>
</beans>

注入null和空字符串的值

Spring 会把属性的空参数直接当成空字符串来处理
当我们需传入一个null值,需采用以下写法

<bean class="exampleBean" id="...">
    <property name="email" value="">
</property></bean>
等同于以下set代码
exampleBean.setEmail("")

当需放入NULL到属性值上时,此时<null>元素用于传入Null值
<bean class="exampleBean" id="...">
    <property name="email"><null></null></property>
</bean>
等同于以下set代码
exampleBean.setEmail(null)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring 中如何为Bean注入集合呢? 的相关文章

随机推荐

  • Kotlin和Android:一种语言背后的JetBrains和Google

    Google I O 2017 宣布了几项重要公告 但对我而言 最有趣的一个是Android上的 对Kotlin的一流支持 关于此公告的Kotlin博客文章讨论了这给Kotlin用户带来的好处 如果您担心Kotlin支持的其他平台 服务器和
  • React-Native开发中常用的第三方控件持续更新

    十一假期已经过去了 今天正式开工了 这里的文章我会持续进行更新 希望为开发的小伙伴们提供点帮助 如果能帮到你们 我就心满意足了 十一假期学习撸了一个小程序 欢迎各位朋友进行关注 代码已经在gitHub上开源 清风天气 清风天气 2018 1
  • python三种基本数据类型_python基础数据类型

    python常用的数据类型包括整型 int 字符串 str 布尔值 bool 列表 list 元组 tuple 字典 dict 集合 set 整型 int int操作方法 bit length 就是查看十进制数转换成二进制在内存中占用了多少
  • 第三届阿里云磐久智维算法大赛——GRU BaseLine

    赛题 比赛链接 第三届阿里云磐久智维算法大赛 天池大赛 阿里云天池 aliyun com 大赛概况 庸医只知头痛医头脚痛医脚 凡良医者 必会抽丝剥茧 察其根本 方得药到病除 第一届和第二届磐久智维算法大赛 我们针对异常预测开展了积极的探索和
  • QGIS3.10编译指南

    下载所需要软件 安装VS2015以及版本5以上的QT 根据我的电脑环境 我使用vs2015 x64 和 QT5 10 1版本 并将QT配置到VS上 安装CMake 有需要的再额外安装Python37 安装doxyden 除VS默认加入环境路
  • web服务器压力测试工具---ab

    文章目录 写在前面 1 吞吐率 Requests per second 2 并发连接数 The number of concurrent connections 3 并发用户数 The number of concurrent users
  • C++之虚函数

    都说面向对象的三大特性是封装 继承 多态 C 作为一门面向对象编程语言 肯定也是具备了面向对象的三大特性 那么在C 中是如何实现多态的呢 在C 中是通过虚函数动态绑定的方式实现多态的 虚函数与纯虚函数 首先我们来回顾一下虚函数 在C 中是使
  • Vue3 defineProp传参以及defineEmits事件传递详细解释

    defineProp父子组件传参 vue3中引用另一个组件非常简单 不再需要设置各个组件的name 直接import导入即可 下方代码 父组件为PropSuper vue 子组件为PropBase vue
  • [关系图谱] 二.Gephi导入共线矩阵构建作者关系图谱

    本文主要讲解Gephi绘制作者间的关系图谱 该软件可以广泛应用于社交网络 知识图谱分析 推荐读者使用 这是非常基础的一篇文章 重点讲解Gephi使用方法 希望对大家有所帮助 推荐前文 python数据挖掘课程 十七 社交网络Networkx
  • 算法知识点

    维生素C吃多了会上火 个人CSDN博文目录 2022蓝桥杯 目录 语法 基础算法 提升算法 语法 指针 标准输入输出 队列 结构体 c STL 基础算法 排序算法 树 二叉树 提升算法
  • Ping工具ICMP报文学习

    首先 这里有一个很好的博客 入口 先说个结论 Ping是通过IP ICMP协议发出去的 这跟我们传统UDP和TCP不一样 其通过创建套接字直接从IP层接受数据 具体可以参照上述文档 为什么ICMP的ping和tracert不经过tcp或ud
  • 面向对象编程的三大特性

    面向对象编程主要体现为三个特性 1 封装性 面向对象编程的核心思想之一就是将数据和对数据的操作封装在一起 通过抽象 即从 具体的实例中抽取出共同的性质形成一般的概念 例如类的概念 Java 中属性的封装 无特殊情况都是用的 private
  • InputAction的使用

    感觉Unity中InputAction的使用 步步都是坑 需求点介绍 当用户长按0 5s 键盘X或者VR left controller primaryButton 即X键 时 显示下一个图片 步骤总览 创建InputAction资产 将该
  • 数据库杂谈(三)——关系代数

    3 形式化关系查询语言 摘要 关系代数是一种抽象的查询语言 用对关系的运算来表达查询 作为研究关系数据语言的数学工具 在本文中 我们不仅谈论关系代数的知识点 而且还配备了对应的练习题 文章目录 3 形式化关系查询语言 3 1 关系代数 3
  • 【笔记】C++笔记

    1 书写HelloWorld include
  • ICML 2015压轴讨论总结:6大神畅谈深度学习的未来

    原文地址 http www csdn net article 1970 01 01 2825290
  • Error during WebSocket handshake: Unexpected response code: 404,springboot整合websocket出错

    Error during WebSocket handshake Unexpected response code 404 浏览器访问websocket出现错误 一 运行环境 二 需要引入的包 三 项目路径 四 工具类 五 静态页面以及js
  • CPU一级缓存L1 D-cache\L1 I-cache与二级缓存L2 cache深度分析

    CPU缓存 通过优化的的读取机制 可以使CPU读取缓存的命中率非常高 大多数CPU可达90 左右 也就是说CPU下一次要读取的数据90 都在缓存 SRAM 中 只有大约10 需要从内存 DRAM DDR等 读取 这大大节省了CPU直接读取内
  • 算法篇:贪心算法解决田忌赛马问题

    田忌赛马 贪心算法 问题分析 这是一道很经典的贪心算法入门题 这道题贪心的思想是 要把每一匹马的作用发挥到最大 把已 方赢的概率增加到最大 我是从双方慢马的角度来分析的 其实快马和慢马的思路差不多 用田忌最慢的马与王最慢的马相比较 1 如果
  • Spring 中如何为Bean注入集合呢?

    转自 Spring 中如何为Bean注入集合呢 下文讲述Spring中为Bean注入集合的方法分享 如下所示 常见的集合类型有 List Set Map 和 properties 标签 集合名称 说明