配置文件
Spring Boot 约定把配置放在 src/main/resources 下的 application.properties 或 application.yml(.yaml 亦可)中,应用启动时自动加载。两种格式等价、按需二选一:properties 简单直接,yaml 缩进层级更适合树形结构。
properties 写法
server.port=8081
spring.application.name=demo
app.title=示例应用
app.base-url=https://example.com
app.servers[0]=https://example.com/a
app.servers[1]=https://example.com/b
app.map.k1=v1
app.map.k2=v2
yaml 写法
与上面等价:
server:
port: 8081
spring:
application:
name: demo
app:
title: 示例应用
base-url: https://example.com
servers:
- https://example.com/a
- https://example.com/b
map:
k1: v1
k2: v2
注意:yaml 靠缩进表达层级,不要用 Tab;冒号后要有空格;含特殊字符的字符串建议加引号。list 用 - 前缀,map 用 键: 值。
配置来源的优先级
同一配置项出现在多处时,按优先级从高到低大致为:命令行参数、Java 系统属性、操作系统环境变量、application-{profile}(见 05 章)、application.* 配置文件;完整清单与细节以官方文档为准。常用覆盖方式:
- 命令行:
java -jar demo.jar --server.port=8082 - 环境变量:如
SERVER_PORT=8082(环境变量名按约定做大小写与分隔符转换,规则见官方文档)
在代码中取值
简单取值用 @Value:
@Value("${app.title:默认标题}") // 冒号后是取不到时的默认值
private String title;
结构化、可校验的批量绑定则用 @ConfigurationProperties,见 06 章。配置里还可以引用其他配置项,例如 app.base-url: ${server.port} 形式的占位符。
常见坑
- properties 含中文时按 UTF-8 保存,避免乱码;
- 同一配置项在多处定义时,生效的是优先级更高的来源;
- yaml 缩进不一致会直接启动失败,报错通常指向解析位置;
- 修改配置文件后需要重启(或配合 devtools 热更新,见官方文档)才生效。
小结
配置文件是 Spring Boot 的「控制面板」。先记住 properties/yaml 两种写法、加载优先级和 @Value 取值,下一章在此基础上做多环境切换。