在 YAML 配置文件中定义 List 并在 Spring 应用中注入是非常常见的操作,下面详细介绍具体写法和注入方式。

一、YAML 中定义 List 的几种方式

1. 缩进式写法(推荐)

最常用的方式,通过短横线 - 加空格表示列表项:

yaml

# application.yml
my:# 基本类型List   这种写法 要注意-后面不能有空格stringList:-苹果-香蕉-橙子# 数字类型List   这种写法 要注意-后面不能有空格numberList:-10-20-30# 对象类型ListuserList:-name: 张三age: 25-name: 李四age: 30-name: 王五age: 35
2. 行内式写法(紧凑格式)

逗号分隔列表项:

yaml

# 行内式写法
my:stringList: 苹果, 香蕉, 橙子numberList: 10, 20, 30# 对象列表行内式userList: [{name: 张三, age: 25}, {name: 李四, age: 30}]
3. 混合写法

根据场景灵活组合:

yaml

my:mixedList:- 基础值- {key: value}  # 行内对象- name: 测试value: 123    # 缩进对象

二、在 Spring 中注入 List 的方法

假设我们有如下配置类和实体类用于接收注入:

1. 实体类定义(用于对象列表)

java

运行

@Data
public class User {private String name;private Integer age;
}
2. 注入方式一:@Value 注解(适合简单类型)

java

运行

@Component
public class ListConfig {// 注入字符串列表@Value("${my.stringList}")private List<String> stringList;// 注入数字列表@Value("${my.numberList}")private List<Integer> numberList;// 打印列表内容public void printLists() {System.out.println("字符串列表: " + stringList);System.out.println("数字列表: " + numberList);}
}
3. 注入方式二:@ConfigurationProperties(适合复杂类型)

更推荐的方式,支持对象列表和类型转换:

java

运行

@Component
@ConfigurationProperties(prefix = "my")  // 绑定前缀
@Data
public class MyConfig {private List<String> stringList;private List<Integer> numberList;private List<User> userList;  // 对象类型列表
}
4. 使用注入的 List

java

运行

@SpringBootApplication
public class ListDemoApplication implements CommandLineRunner {@Autowiredprivate MyConfig myConfig;  // 注入配置类@Autowiredprivate ListConfig listConfig;  // 注入@Value配置public static void main(String[] args) {SpringApplication.run(ListDemoApplication.class, args);}@Overridepublic void run(String... args) {// 打印@ConfigurationProperties注入的列表System.out.println("用户列表: " + myConfig.getUserList());// 打印@Value注入的列表listConfig.printLists();}
}

三、注意事项

  1. 配置前缀匹配

    • @ConfigurationProperties 的 prefix 要与 yaml 中的父节点完全匹配
    • 字段名要与 yaml 中的子节点名称一致(支持驼峰命名转换)
  2. 依赖添加
    如果使用 @ConfigurationProperties,需要在 pom.xml 中添加依赖(Spring Boot 项目):

    xml

    <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional>
    </dependency>
    

  3. 类型转换
    Spring 会自动进行类型转换,如字符串转数字、日期等,但要确保格式正确

  4. 默认值设置
    可以通过@Value("${my.list:默认值1,默认值2}")或在配置类中直接初始化设置默认值

通过以上方式,就可以在 YAML 中灵活定义各种类型的 List,并在 Spring 应用中方便地注入和使用了。

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

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

相关文章

C# 反射和特性(自定义特性)

自定义特性 你或许已经注意到了&#xff0c;应用特性的语法和之前见过的其他语法有很大不同。你可能会觉得特 性是一种完全不同的结构类型&#xff0c;其实不是&#xff0c;特性只是一种特殊的类。 有关特性类的一些要点如下。 用户自定义的特性类叫作自定义特性。所有特性类都…

科目二的四个电路

一.K21电动机单连续运转接线(带点动控制)1.电路图2.主线路这可很明了,是一条直线,从上接到下就OK了,然后从热继电器出来,接到SB3按钮的常闭触点上接着往下走一端接到SB2的常闭触点上,接着往下走&#xff0c;走到接触器的线圈上,从L2借一条火线出来,从熔断器的上端接入,另一端接…

【位运算】查询子数组最大异或值|2693

本文涉及知识点 位运算、状态压缩、枚举子集汇总 3277. 查询子数组最大异或值 给你一个由 n 个整数组成的数组 nums&#xff0c;以及一个大小为 q 的二维整数数组 queries&#xff0c;其中 queries[i] [li, ri]。 对于每一个查询&#xff0c;你需要找出 nums[li…ri] 中任…

HTML DOM 方法

HTML DOM 方法 引言 HTML DOM&#xff08;文档对象模型&#xff09;是HTML文档的编程接口&#xff0c;它允许开发者通过JavaScript来操作HTML文档中的元素。DOM 方法是DOM编程的核心&#xff0c;它提供了丰富的操作手段来改变网页的结构、样式和行为。本文将详细介绍HTML DOM中…

w嵌入式分享合集68

自己的原文哦~ https://blog.51cto.com/whaosoft/14133002 一、一键开关机电路的设计方案 方案一&#xff1a;电路图 一键开关机电路分析如下&#xff1a; 电路工作流程如下&#xff1a; Key按下瞬间&#xff0c;Q2、Q1导通&#xff0c;7805输入电压在8.9V左右&…

FFmpeg QoS 处理

FFmpeg 中的 QoS (服务质量) 处理主要关注于实时流媒体传输中的时序控制、丢帧策略和网络适应等方面。以下是 FFmpeg 中 QoS 相关的关键机制和配置方法。1. 基本 QoS 机制丢帧策略 (Frame Dropping)cAVDictionary *options NULL; av_dict_set(&options, "framedrop&q…

TexStudio中的Latex,PDFLatex,XeLatex和LuaLatex的区别

多种LaTeX编译器一、多种LaTeX编译器 1.1 PDFLaTeX&#xff08;1994年&#xff09; 默认、最常用的引擎。 输入文件通常是 ASCII 或 UTF-8 编码&#xff08;但中文需要 CJK 宏包或 ctex 宏包支持&#xff09;。 字体选择受限&#xff1a;只能使用 TeX 自带的字体或者 Type 1…

容器化部署:用Docker封装机器翻译模型与服务详解

文章目录一、机器翻译容器化的技术栈选型1.1 为什么需要容器化MT模型&#xff1f;1.2 基础镜像选择对比1.3 典型依赖分层方案1.4 性能对比&#xff08;容器化 vs 原生部署&#xff09;二、关键部署模式2.1 轻量级API服务封装2.2 模型热更新策略三、Docker镜像构建3.1 编写Docke…

leetcode_42 接雨水

1. 题意 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 2. 题解 这个题不会做&#xff0c;全部是看得题解捏。 不过能看懂题解感觉自己也很棒了&#xff01; 看完题解后感觉最难的是如何求出有多少…

Spring Boot 整合 Thymeleaf 模板引擎:从零开始的完整指南

引言&#xff1a;为什么选择 Thymeleaf&#xff1f; Thymeleaf 是一个现代化的服务器端 Java 模板引擎&#xff0c;专为 Web 开发而设计。与 JSP 不同&#xff0c;Thymeleaf 模板是纯 HTML 文件&#xff0c;可以直接在浏览器中预览&#xff0c;无需后端服务器支持。这种"…

pytest介绍(python测试框架)(@pytest.mark.parametrize、@pytest.fixtures)

文章目录**1. 核心特点**- **简洁易用**&#xff1a;无需复杂的配置&#xff0c;只需编写简单的函数或类即可进行测试。- **丰富的断言**&#xff1a;直接使用 Python 内置的 assert 语句&#xff0c;失败时提供详细的错误信息。- **自动发现测试**&#xff1a;通过约定的命名规…

[Python 基础课程]继承

在 Python 的面向对象编程&#xff08;OOP&#xff09;中&#xff0c;继承&#xff08;Inheritance&#xff09; 是一种重要的机制&#xff0c;它允许一个类&#xff08;称为子类或派生类&#xff09;从另一个类&#xff08;称为父类、基类或超类&#xff09;中继承属性和方法。…

QT之设计器组件功能(8大类55个组件)

组件名称 功能描述关键属性1. Layouts&#xff08;布局组件&#xff09;(1) Vertical Layout&#xff08;垂直布局&#xff09;将子控件按垂直方向依次排列layoutSpacing&#xff1a;控件之间的间距layoutMargin&#xff1a;布局边缘的边距layoutStretch&#xff1a;设置各控件…

java中list的api详细使用

在Java中&#xff0c;List是集合框架中最常用的接口之一&#xff0c;继承自Collection&#xff0c;代表有序、可重复的元素集合&#xff08;允许null元素&#xff09;。其核心实现类有ArrayList&#xff08;数组实现&#xff0c;随机访问高效&#xff09;、LinkedList&#xff…

Azure AI Search 探索总结

Azure AI Search 原名 Azure Cognitive Service&#xff0c;是Azure中用来给AI项目构建知识库的组件。知识库本质和数据库很像&#xff0c;但是内部的存储结构和检索算法不一样。比如并不是知识库的每一列都可以用来过滤、检索或group by&#xff0c;而是要根据实际情况配置。A…

高效解决 pip install 报错 SSLError: EOF occurred in violation of protocol

高效解决 pip install 报错 SSLError: EOF occurred in violation of protocol 标签&#xff1a; Python, pip, SSLError, Clash, 网络代理, 问题解决 一、问题描述 在Python开发中&#xff0c;pip 是我们最亲密的伙伴。然而&#xff0c;当你身处需要科学上网的环境&#xff0c…

CSS 核心知识点全解析:从基础到实战应用

大家好&#xff01;今天这篇文章将系统总结 CSS 的核心知识点&#xff0c;从最基础的样式引入到复杂的选择器应用&#xff0c;再到盒子模型、文本处理等实战技巧&#xff0c;全程结合代码示例&#xff0c;让你轻松掌握 CSS 的精髓。一、CSS 是什么&#xff1f;为什么需要它&…

ClickHouse的学习与了解

什么是ClickHouse&#xff1f; ClickHouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS)。 在传统的行式数据库系统中&#xff0c;数据按如下顺序存储&#xff1a;RowWatchIDJavaEnableTitleGoodEventEventTime#0893543506621Investor Relations12016/5/18 5:19#1903295…

安卓11 12系统修改定制化_____修改系统 解锁system分区 去除data加密 自由删减系统应用

在定制化系统中。修改系统分区 解锁system。让用户可以自由删减应用。这个在定制化服务中比较常见。对于此项修改服务。需要我们了解基础的分区常识以及常用的几种基础修改步骤。 通过博文了解💝💝💝 1💝💝💝-----修改rom 解锁 system 分区有什么意义 2💝💝…

JetPack系列教程(八):PDF库——让Android应用也能优雅“翻页”

JetPack系列教程&#xff08;八&#xff09;&#xff1a;PDF库——让Android应用也能优雅“翻页” 在Android开发的世界里&#xff0c;加载PDF文件一直是个让人又爱又恨的“小妖精”。爱它&#xff0c;因为PDF是文档界的“万能钥匙”&#xff1b;恨它&#xff0c;因为原生Andr…