当前位置: 首页 > news >正文

实用指南:Spring Boot 读取 YAML 配置文件

Spring Boot 提供了多种读取 YAML 配置文件的方式,以下是主导方法及适用场景:
一、基础读取方式

1、 ‌@Value 注解‌
适用于注入单个属性值,语法为 @Value("${property.path}")。支持默认值设置(如

@Value("${unknown:default}"))。

Yaml:
example:
name: "SpringApp"

Java:
@Value("${example.name}")
private String appName;

2、 ‌Environment 接口‌
经过自动注入 Environment 对象动态获取属性,支持类型转换和默认值。

Java:
@Autowired
private Environment env;
String port = env.getProperty("server.port", "8080");

二、结构化配置绑定

1、 ‌@ConfigurationProperties‌
批量绑定配置到 JavaBean,需指定前缀(prefix)并配合 @Component 或 @EnableConfigurationProperties 使用。

Yaml:
database:
url: "jdbc:mysql://localhost:3306/db"
username: "admin"

Java:
@Component
@ConfigurationProperties(prefix = "database")
public class DatabaseConfig {
private String url;
private String username;
// Getters & Setters
}

2、 ‌嵌套对象与集合‌
YAML 支持复杂数据结构(如 List、Map),需通过 @ConfigurationProperties 映射。

Yaml:
security:
roles:
- "ADMIN"
- "USER"

Java:
@ConfigurationProperties(prefix = "security")
public class SecurityConfig {
private List<String> roles;
// Getters & Setters
}

三、多环境安装

1、 ‌Profile 隔离‌
使用 --- 分隔不同环境的配置,通过 spring.profiles.active 激活。

Yaml:
spring:
profiles: dev
server.port: 8081
---
spring:
profiles: prod
server.port: 80

2、 ‌外部化配置‌
支持从 classpath、项目根目录或指定路径加载配置文件,优先级依次递增。

四、注意事项

‌缩进规则‌:YAML 严格依赖空格缩进,禁用 Tab 键。
‌类型安全‌:建议为 @ConfigurationProperties 类添加 @Validated 注解实现校验。
‌配置覆盖‌:相同属性在不同配置文件中,按加载顺序优先使用先读取的值。

以上方法可根据需求灵活组合,@ConfigurationProperties 适合复杂设置,而 @Value 和 Environment 更适用于便捷场景。

http://www.gsyq.cn/news/8632.html

相关文章:

  • 线程池未争取关闭导致的一个bug
  • 【500 kHz-6 GHz“全频段通吃”神器】 ——成都恒利泰
  • 成都恒利泰——【5 MHz-1 GHz“信号分身术”神器】
  • 详细介绍:【智慧城市】2025年中国地质大学(武汉)暑期实训优秀作品(2):智慧城市西安与一带一路
  • OpenCV-图像通道提取与处理
  • Mac环境安装Nginx指南实录
  • N皇后问题(DFS)
  • android studio发现设备立刻就掉
  • 见证语音领域 GPT-3 时刻!小米开源端到端语音模型 MiMo Audio;Xbox上线游戏助手,实时游戏理解+语音交互丨日报
  • go语言学习之基本数据类型转字符串
  • DeepLearning-LoRA 及其先进变体技术指南
  • 详细介绍:【最新版】SolidWorks2025安装包下载与安装图文教程
  • 华为eNSP防火墙综合网络结构训练.docx - 教程
  • 第二节中央处理单元CPU知识点
  • makefile 入门2(变量赋值)
  • JS复制并气泡提示
  • 实用指南:【鸿蒙面试题-6】LazyForEach 懒加载
  • 第二周预习报告(AI)
  • .netcore的Lucene.Net基础应用
  • 在Ubuntu 16.04上安装openjdk-6/7/8-jdk的步骤
  • 物流行业信息咨询智能问答系统
  • 线性代数 行列式 | 子式 / 主子式 / 顺序主子式 / 余子式 / 代数余子式 - 教程
  • HBase 的自带命令行工具 hbase shell 的基本使用
  • 重塑公司绩效管理的 6 种方法
  • Confluent-Kafka-go 发布超过 1M 消息失败困难克服
  • 组件重新装载时 useSWR 会发起请求
  • Seedream 4.0 简直绝了!
  • mysql查询死锁,mysql查询死锁方法
  • 【IEEE出版、已连续5届稳定快速EI检索】第六届计算机工程与智能控制学术会议(ICCEIC 2025)
  • 向上一步——当做事纠结的人停止决策内耗,你就是掌控自己的神!