Spring Boot 项目中读取 YAML 文件中的数组、集合和 HashMap

在 Spring Boot 项目中,我们经常使用 YAML 文件来配置应用程序的属性。在这篇博客中,我将模拟如何在 Java 的 Spring Boot 项目中读取 YAML 文件中的数组、集合和 HashMap。

1. 介绍

YAML(YAML Ain't Markup Language)是一种人类可读的数据序列化格式,通常用于配置文件。在 Spring Boot 中,我们可以使用 @ConfigurationProperties 注解和 application.yml 文件轻松管理应用程序的配置。

2. 准备工作

首先,确保你的 Spring Boot 项目中包含以下依赖:

复制代码
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

3. 创建 YAML 文件

src/main/resources 目录下创建一个名为 application.yml 的文件,并添加以下内容:

复制代码
server:
  port: 6666
lps:
  languages:
    - Java
    - Python
    - C
    - C++
    - C#
  colors:
    - red
    - green
    - blue
  fruits:
    - name : apple
      price : 3.88
    - name : banana
      price : 2.88
    - name : orange
      price : 5.28
  ages:
    john: 30
    alice: 25
    bob: 35

这个文件包含了两个数组、一个水果列表和一个年龄的 HashMap。

4. 创建配置类

创建一个 Java 配置类,用于将 YAML 文件中的属性映射到对象。创建一个名为 AppProperties.java 的文件:

java 复制代码
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Map;

/**
 * @author 阿水
 * @ClassName LpsProperties 
 * @description: TODO
 * @date 2023年11月26日
 * @version: 1.0
 */
@Component
@ConfigurationProperties(prefix = "lps")
@Data
public class LpsProperties {
    private String[] languages;
    private List<String> colors;
    private List<Fruits> fruits;
    private Map<String, Integer> ages;
    @Data
    public static class Fruits {
        private String name;
        private Double price;
    }
}

5. 注入配置类

在你的服务或组件中,通过 @Autowired 注解将 AppProperties 配置类注入,然后访问其中的属性:

java 复制代码
 @Autowired
 LpsProperties lpsProperties;

6. 运行项目

在你的应用程序中使用 LpsProperties类,并调用方法,你将能够从 YAML 文件中读取数组、集合和 HashMap,并在控制台上输出它们。

java 复制代码
@SpringBootTest
class CountDemoApplicationTests {
    @Autowired
    LpsProperties lpsProperties;

    @Test
    void contextLoads() {
        String[] languages = lpsProperties.getLanguages();
        System.out.print("常见编程语言:");
        for (String language : languages) {
            System.out.print(language + " ");
        }
        System.out.println("等等");
        System.out.println("----------------------");
        Map<String, Integer> ages = lpsProperties.getAges();
        ages.forEach((key, value) -> System.out.println(key + "今年" + value + "岁"));
        System.out.println("----------------------");
        List<String> colors = lpsProperties.getColors();
        for (String color : colors) {
            System.out.println("收到的颜色为:" + color);
        }
        System.out.println("----------------------");
        List<LpsProperties.Fruits> fruits = lpsProperties.getFruits();
        fruits.forEach(fruit -> System.out.println(fruit));

    }

}

7. 结论

通过使用 @ConfigurationProperties 注解和 YAML 文件,我们可以轻松地将配置属性映射到 Java 对象中。这使得在 Spring Boot 项目中管理数组、集合和 HashMap 的配置变得简单而直观。

希望这篇博客对你在 Spring Boot 项目中读取 YAML 文件中的数组、集合和 HashMap 有所帮助。如有疑问或建议,请随时提出。

相关推荐
用户8356290780512 小时前
Python 实现 PDF 文件加密与解密方法
后端·python
用户8356290780512 小时前
使用 Python 冻结与拆分 Excel 窗格教程
后端·python
你好潘先生10 小时前
别再记命令了,用 yeero do 说句人话就能跑脚本,而且不烧 token
服务器·python·命令行
Agent_大师11 小时前
WebSocket 行情重连成功,K线缺口不会自动消失
python
荣码11 小时前
LLM结构化输出:让AI返回JSON而不是废话,我踩了4个坑
java·python
copyer_xyf11 小时前
FastAPI 如何连接 MySQL
后端·python
apocelipes1 天前
常用编程语言和库的正则表达式性能对比
c语言·c++·python·性能优化·golang·开发工具和环境
用户8356290780511 天前
使用 Python 在 PDF 中创建与管理书签
后端·python
MeixianAgent1 天前
Python 回测数据入口怎么验?历史 K 线入库前先做 5 个检查
后端·python
咕白m6251 天前
用 Python 实现一键批量查找与替换 Excel 数据
后端·python