配置文件

Spring Boot 约定把配置放在 src/main/resources 下的 application.propertiesapplication.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 取值,下一章在此基础上做多环境切换。

笔记加载中…