实用指南: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 更适用于便捷场景。

posted @ 2025-09-20 17:47  yfceshi  阅读(68)  评论(0)    收藏  举报