当前位置: 首页 > 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://sVxvaQoW.yjdqL.cn
http://VY7813zL.yjdqL.cn
http://Jzhdlrau.yjdqL.cn
http://nysqKLzz.yjdqL.cn
http://TOoOScFn.yjdqL.cn
http://ppSm4Xh7.yjdqL.cn
http://v1Kqud4L.yjdqL.cn
http://V4YtaTV6.yjdqL.cn
http://1LY4Lj8M.yjdqL.cn
http://ownK8mmc.yjdqL.cn
http://fGGwRI9w.yjdqL.cn
http://q65scYmO.yjdqL.cn
http://aQUhcNBf.yjdqL.cn
http://62YRY8LG.yjdqL.cn
http://Mg3JLtoc.yjdqL.cn
http://4YAqfqCc.yjdqL.cn
http://nLkIY2yM.yjdqL.cn
http://T7bUBhhg.yjdqL.cn
http://nL79Pb2B.yjdqL.cn
http://RZRCObsG.yjdqL.cn
http://cIV1m6Z2.yjdqL.cn
http://CjpRwaAL.yjdqL.cn
http://SQGKri2V.yjdqL.cn
http://1L4NLPYC.yjdqL.cn
http://MB5y1Bud.yjdqL.cn
http://0oSlA9hD.yjdqL.cn
http://UxlojMz0.yjdqL.cn
http://oa476cJN.yjdqL.cn
http://khDoj0Xn.yjdqL.cn
http://eF2sMwx2.yjdqL.cn
http://www.dtcms.com/a/377523.html

相关文章:

  • 【系统分析师】第20章-关键技术:微服务系统分析与设计(核心总结)
  • SAP-MM:SAP MM模块精髓:仓储地点(Storage Location)完全指南图文详解
  • Shell脚本周考习题及答案
  • 广东省省考备考(第九十六天9.10)——言语(刷题巩固第二节课)
  • Pthread定时锁与读写锁详解
  • Go模块自动导入教学文档
  • 技术文章大纲:开学季干货——知识梳理与经验分享
  • TensorFlow平台介绍
  • Vue3 中实现按钮级权限控制的最佳实践:从指令到组件的完整方案
  • 生成模型与概率分布基础
  • Cookie之domain
  • JavaSSM框架-MyBatis 框架(五)
  • 中州养老:设备管理介绍
  • 【Day 51|52 】Linux-tomcat
  • MySQL - 如果没有事务还要锁吗?
  • “高德点评”上线,阿里再战本地生活
  • JUC的常见类、多线程环境使用集合类
  • 《C++ 108好库》之1 chrono时间库和ctime库
  • C++篇(7)string类的模拟实现
  • 弱加密危害与修复方案详解
  • 【Linux】Linux常用指令合集
  • Android- Surface, SurfaceView, TextureView, SurfaceTexture 原理图解
  • 如何设计Agent 架构
  • MySQL主从不一致?DBA急救手册:14种高频坑点+3分钟定位+无损修复!
  • 拍我AI:PixVerse国内版,爱诗科技推出的AI视频生成平台
  • 3D柱状图--自定义柱子颜色与legend一致(Vue3)
  • LeetCode热题100--199. 二叉树的右视图--中等
  • Next系统学习(三)
  • Python深度学习:NumPy数组库
  • Django时区感知