本篇是《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 是企业级首选


