欢迎光临
我们一直在努力

《Spring Boot 4》配置文件怎么写?application.yml 与 properties 实战对比(Spring Boot 4 配置全解)

本篇是《Spring Boot 4 学习从入门到大神》专栏第 4 篇。

配置是 Spring Boot 的灵魂。本文将彻底讲清 yml 与 properties 的区别、多环境配置、配置优先级和类型安全的配置绑定,帮你避开 90% 的配置坑。


一、为什么 Spring Boot 4 更推荐 yml?

Spring Boot 4 中,官方示例和自动配置默认都偏向 YAML。

1️⃣ properties 写法(老派)

server.port=8081
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=root

2️⃣ yml 写法(现代、推荐)

server:
port: 8081

spring:
datasource:
url: jdbc:mysql://localhost:3306/test
username: root
password: root

✅ yml 的优势:

  • 层级清晰,一眼看懂结构

  • 复用前缀,减少重复

  • 天然支持复杂对象 / List / Map

  • IDEA 支持自动补全和校验

📌 结论:

新项目一律用 yml,老项目维护才用 properties。


二、YAML 语法三大铁律(写错就启动失败)

✅ 铁律 1:冒号后面必须有空格

❌ 错误:

server:
port:8081

✅ 正确:

server:
port: 8081


✅ 铁律 2:使用空格缩进,禁止使用 Tab

Spring Boot 4 对此非常严格,缩进不一致会直接报错。


✅ 铁律 3:字符串默认不需要引号

app:
name: Spring Boot 4 Demo

特殊字符才需要引号:

app:
description: "Hello: Spring Boot"


三、多环境配置:dev / test / prod(企业级必备)

这是面试和实战必问点。

1️⃣ 核心思想

  • 一个主配置

  • 多个环境配置

  • 通过 spring.profiles.active 切换


2️⃣ 文件命名规则

application.yml # 主配置
application-dev.yml # 开发环境
application-test.yml # 测试环境
application-prod.yml # 生产环境


3️⃣ 主配置文件(application.yml)

spring:
profiles:
active: dev

👉 表示当前激活 dev 环境。


4️⃣ 各环境示例

开发环境(application-dev.yml)

server:
port: 8080

spring:
datasource:
url: jdbc:mysql://localhost:3306/dev_db
username: dev
password: dev123

生产环境(application-prod.yml)

server:
port: 80

spring:
datasource:
url: jdbc:mysql://prod-db:3306/prod_db
username: ${DB_USER}
password: ${DB_PASSWORD}

✅ 生产环境推荐:

  • 使用环境变量

  • 不写死密码


5️⃣ 启动时指定环境(非常常用)

java -jar app.jar –spring.profiles.active=prod


四、配置优先级(非常重要!记不住容易踩雷)

Spring Boot 4 加载配置的优先级从高到低:

  • 命令行参数

    –server.port=8081

  • JVM 系统属性

    -Dserver.port=8081

  • 操作系统环境变量

  • application-{profile}.yml

  • application.yml

  • @PropertySource 注解

  • 默认属性

  • 📌 结论:

    越晚加载,优先级越高;外部配置 > 内部配置。


    五、自定义配置与 @Value(简单但不推荐)

    1️⃣ 定义配置

    app:
    author: 张三
    version: 1.0.0

    2️⃣ 读取配置

    @Value("${app.author}")
    private String author;

    @Value("${app.version}")
    private String version;

    3️⃣ @Value 的缺点

    • 不支持复杂对象

    • 不支持校验

    • 配置分散,难维护

    ✅ 企业级项目不推荐大量使用 @Value


    六、@ConfigurationProperties(强烈推荐,类型安全)

    这是 Spring Boot 最优雅的配置方式。

    1️⃣ 定义配置类

    @Component
    @ConfigurationProperties(prefix = "app")
    public class AppProperties {

    private String author;
    private String version;
    private List<String> features = new ArrayList<>();

    // getter / setter
    }

    2️⃣ yml 配置

    app:
    author: 张三
    version: 4.0.0
    features:
    – AOT
    – GraalVM
    – Native Image

    3️⃣ 使用配置

    @RestController
    public class DemoController {

    @Autowired
    private AppProperties appProperties;

    @GetMapping("/info")
    public AppProperties info() {
    return appProperties;
    }
    }

    ✅ 优点:

    • 类型安全

    • 支持 IDEA 自动补全

    • 支持校验(JSR‑303)

    • 结构清晰,易维护


    七、配置校验(生产级必备)

    @Component
    @ConfigurationProperties(prefix = "app")
    @Validated
    public class AppProperties {

    @NotBlank
    private String author;

    @Min(1)
    private int versionCode;

    // getter / setter
    }

    启动时会自动校验,配置错误直接启动失败,避免线上事故。


    八、Spring Boot 4 中的新变化(补充)

    • yml 解析器更严格(容错率更低)

    • 对 Kubernetes ConfigMap / Secret 支持更友好

    • AOT 模式下配置处理更早,启动更快


    九、常见配置坑位总结(血泪教训)

    ❌ 坑1:缩进不一致

    现象:启动报错 while scanning a simple key

    ✅ 解决:统一使用空格,IDEA 开启 YAML 校验


    ❌ 坑2:环境配置未生效

    现象:配置写了,但读不到

    ✅ 解决:检查 spring.profiles.active


    ❌ 坑3:生产环境密码写死

    现象:代码泄露,数据库被删

    ✅ 解决:使用环境变量或配置中心


    ❌ 坑4:@Value 泛滥

    现象:配置分散,难以维护

    ✅ 解决:改用 @ConfigurationProperties


    十、本篇总结(重点记住这 4 点)

  • Spring Boot 4 首选 yml

  • 多环境配置是标配

  • 配置优先级:命令行 > JVM > 环境变量 > yml

  • @ConfigurationProperties 是企业级首选

  • 赞(0)
    未经允许不得转载:171主机测评 » 《Spring Boot 4》配置文件怎么写?application.yml 与 properties 实战对比(Spring Boot 4 配置全解)
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址