Spring Boot 读取 YAML 配置文件

发布于:2025-09-11 ⋅ 阅读:(20) ⋅ 点赞:(0)

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 更适用于简单场景。


网站公告

今日签到

点亮在社区的每一天
去签到