深入理解Spring中的集合依赖注入

目录

1. 创建一个配置类来定义Bean

2. 在组件中注入Bean

构造方法注入

Setter方法注入

总结


如果集合仅仅是实体类的一个内部属性,并且与实体类的其他属性紧密相关,那么将其作为实体类的一个属性可能更加合适。

如果集合需要独立配置,那么将其作为一个独立的Spring Bean可能是更好的选择。这样做的主要好处是集中管理、易于配置和测试。这时Spring容器会负责它的生命周期管理。

以下是一个简单的例子来说明注入一个集合Bean:

1. 创建一个配置类来定义Bean

首先,我们可以创建一个配置类,其中定义一个要独立配置的集合,作为Bean交给Spring 容器管理。这个集合可以是一个简单的列表、映射或任何你希望独立配置的集合类型。

import org.springframework.context.annotation.Bean;  
import org.springframework.context.annotation.Configuration;  
import java.util.ArrayList;  
import java.util.List;  @Configuration  
public class SharedConfig {  @Bean  public List<String> sharedList() {  List<String> list = new ArrayList<>();  list.add("Item 1");  list.add("Item 2");  list.add("Item 3");  return list;  }  
}

2. 在组件中注入Bean

然后,我们可以在Spring组件中注入这个独立配置的集合Bean。

构造方法注入

import org.springframework.beans.factory.annotation.Autowired;  
import org.springframework.stereotype.Component;  
import java.util.List;  @Component  
public class ComponentA {  private final List<String> sharedList;  @Autowired  public ComponentA(List<String> sharedList) {  this.sharedList = sharedList;  }  public void doSomethingWithList() {  // 使用sharedList做一些事情  }  
}  

观察可以知道,以上例子是通过构造方法注入

Setter方法注入

除了构造方法注入之外,Spring还提供了其他依赖注入的方式,比如Setter方法注入

@Component  
public class ComponentWithSetterInjection {  private List<String> sharedList;  @Autowired  public void setSharedList(List<String> sharedList) {  this.sharedList = sharedList;  }  public void useSharedList() {  // 使用sharedList  }  
}

总结

每种注入方式都有其适用的场景和优缺点。

构造方法注入通常用于确保依赖项在对象创建时就被设置,并且是不可变的。

Setter方法注入则提供了更大的灵活性,可以在对象创建后动态地改变依赖项的值。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/677438.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用navicat导出mysql离线数据后,再导入doris的方案

一、背景 doris本身是支持直接从mysql中同步数据的&#xff0c;但有时候&#xff0c;客户不允许我们使用doris直连mysql&#xff0c;此时就需要客户配合将mysql中的数据手工导出成离线文件&#xff0c;我们再导入到doris中 二、环境 doris 1.2 三、方案 doris支持多种导入…

【C语言】一道相当有难度的指针题目(某大厂笔试真题)超详解

这是比较复杂的题目&#xff0c;但是如果我们能够理解清楚各个指针代表的含义&#xff0c;画出各级指针的关系图&#xff0c;这道题就迎刃而解了。 学会这道笔试题&#xff0c;相信你对指针的理解&#xff0c;对数组&#xff0c;字符串的理解都会上一个档次。 字符串存储使用的…

使用Arduino UNO和蓝牙模块制作智能小车

目录 概述 1 硬件结构 1.1 硬件组成 1.2 蓝牙模块介绍 1.3 控制板IO引脚定义 2 机械结构 3 固件设计 4 App设计 5 参考文献 概述 本文主要介绍使用Arduino UNO作为主板&#xff0c;用于控制电机和接收蓝牙模块数据。蓝牙模块用于从手机App上接收控制信号&#xff0c;使…

Windows下搭建Redis Sentinel

下载安装程序 下载Redis关于Windows安装程序&#xff0c;下载地址 下载成功后进行解压&#xff0c;解压如下&#xff1a; 配置redis和sentinel 首先复制三份redis.windows.conf&#xff0c;分别命名为&#xff1a;redis.6379.conf、redis.6380.conf、redis.6381.conf&…

Spring基础 - SpringMVC请求流程和案例

Spring基础 - SpringMVC请求流程和案例 什么是MVC 用一种业务逻辑、数据、界面显示分离的方法&#xff0c;将业务逻辑聚集到一个部件里面&#xff0c;在改进和个性化定制界面及用户交互的同时&#xff0c;不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理…

【漏洞复现】SpringBlade export-user接口存在SQL注入漏洞

漏洞描述 SpringBlade 是一个由商业级项目升级优化而来的微服务架构 采用Spring Boot 2.7 、Spring Cloud 2021 等核心技术构建,完全遵循阿里巴巴编码规范。提供基于React和Vue的两个前端框架用于快速搭建企业级的SaaS多租户微服务平台。SpringBlade export-user接口存在SQL注…

4核8G服务器性能怎么样?4核8G12M配置能支持多少人同时访问?

4核8G服务器性能怎么样?4核8G12M配置能支持多少人同时访问&#xff1f;腾讯云轻量4核8G12M轻量应用服务器支持多少人同时在线&#xff1f;通用型-4核8G-180G-2000G&#xff0c;2000GB月流量&#xff0c;系统盘为180GB SSD盘&#xff0c;12M公网带宽&#xff0c;下载速度峰值为…

Doris中的本地routineload环境,用于开发回归测试用例

----------------2024-2-6-更新-------------- doris的routineload&#xff0c;就是从kafka中加载数据到表&#xff0c;特点是定时、周期性的从kafka取数据。 要想在本地开发测试routine load相关功能&#xff0c;需要配置kafka环境&#xff0c;尤其是需要增加routine load回…

C语言中的数据类型-强转

强制类型转换 概念&#xff1a;将某种类型的数据转化我们需要的数据类型&#xff0c;注意强制类型转化是临时强转&#xff0c;不会改变本身的数据类型。 强转又分为显式强转和隐式转化 显示强转是按照我们的要求进行转化 格式&#xff1a;(需要转化数据类型)变量名 #inclu…

fast.ai 深度学习笔记(五)

深度学习 2&#xff1a;第 2 部分第 10 课 原文&#xff1a;medium.com/hiromi_suenaga/deep-learning-2-part-2-lesson-10-422d87c3340c 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 来自 fast.ai 课程的个人笔记。随着我继续复习课程以“真正”理解它&#xff0c;…

优化elemen-ui的el-table的tree树结构因数据过多卡顿问题

最近遇到一个要在elemen-ui的el-table放一个树结构的表数据 但是因为数据实在过多&#xff0c;而且列也有四五列&#xff0c;还有操作列 dom操作频繁导致页面非常的卡顿 网上看了很多种方法以及elementui的官方方法 使用lazy和load方法终于解决 对应el-table <el-table v…

定金和订金主要区别

定金和订金主要区别 定金和订金主要区别利弊分析合同示例订金合同示例定金合同示例 定金和订金主要区别 对比项定金订金定义为保证债务履行&#xff0c;先行支付一定数额的货币作为担保预付款&#xff0c;表明购房意愿的一种支付手段数额限制通常不得超过主合同标的额的20%数额…

Stable Diffusion 模型下载:GhostMix(幽灵混合)

文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八案例九案例十 下载地址 模型介绍 GhostMix 是绝对让你惊艳的模型&#xff0c;也是自己认为现在最强的2.5D模型。我认为模型的更新应该是基于现有的画面整体不大变的前提下&#xff0c;提高模型的成…

单片机学习笔记---蜂鸣器工作原理

目录 蜂鸣器介绍 蜂鸣器的驱动方式 ULN2003D芯片工作原理 实战预备知识&#xff1a;基础乐理 音名的分组 全音和半音的关系 音高的表示 五线谱中的符号定义 简谱上的符号定义 C调音符与频率对照表 相关计算 蜂鸣器介绍 蜂鸣器是一种将电信号转换为声音信号的器件&a…

给我的用户kewei,升级为免密root权限

要在Ubuntu系统中让用户 kewei 具有免密码执行sudo命令的权限&#xff0c;你需要编辑sudoers文件。这可以通过使用visudo命令来安全地进行。请按照以下步骤操作&#xff1a; 打开终端。 输入以下命令来编辑sudoers文件&#xff1a; sudo visudo这将使用默认的文本编辑器&#…

C++,stl,list容器详解

目录 1.list基本概念 2.list构造函数 3.list的赋值和交换 4.list大小操作 5.list的插入的删除 6.list数据存取 7.list反转和排序 排序案例 1.list基本概念 2.list构造函数 #include<bits/stdc.h> using namespace std;void print(const list<int> &lk) …

Maui blazor ios 按设备类型设置是否启用safeArea

需求&#xff0c;新做了个app&#xff0c; 使用的是maui blazor技术&#xff0c;里面用了渐变背景&#xff0c;在默认启用SafeArea情况下&#xff0c;底部背景很突兀 由于现版本maui在SafeArea有点bug&#xff0c;官方教程的<ContentPage SafeAreafalse不生效&#xff0c;于…

H5/CSS 笔试面试考题(71-80)

简述哪种输入类型用于定义周和年控件(无时区)( ) A:date B:week C:year 面试通过率:67.0% 推荐指数: ★★★★★ 试题难度: 初级 试题类型: 选择题 答案:b 简述下列哪个元素表示外部资源?该元素可以被视为图像、嵌套的浏览上下文或插件要处理的资源。它包括各种属性…

防火墙USG6000V配置接口实验

要求:防火墙向下使用子接口分别对应生产区和办公区,所有分区设备可以ping通网关 最终效果部分示例:client1,Server1,PC2都能ping通网关 实现流程: 云要添加虚拟网卡ip(此处用的是创建的虚拟环回ip),更改端口映射为双向通道且更改编号 SW1:#要先登录防火墙初始账号和密码,然后…

SSL和Kerberos身份验证的区别?

SSL&#xff08;Secure Sockets Layer&#xff0c;安全套接层&#xff09;和 Kerberos&#xff08;一种网络认证协议&#xff09;都是用于提供身份验证和加密通信的技术。它们有以下主要区别&#xff1a; 目的&#xff1a; SSL 主要用于保护基于Web的应用的通信安全。而 Kerb…