SpringBoot配置文件properties与yml
SpringBoot 配置文件位于 src/main/resources/ 目录。
配置文件位置
| 文件名 | 格式 | 说明 |
|---|---|---|
| application.properties | 键值对 | 传统格式 |
| application.yml | YAML | 层级格式,推荐 |
properties格式
properties
# application.properties
server.port=8080
server.servlet.context-path=/app
spring.application.name=demo
spring.datasource.url=jdbc:mysql://localhost:3306/db
spring.datasource.username=root
spring.datasource.password=123456
yml格式
YAML
# application.yml
server:
port: 8080
servlet:
context-path: /app
spring:
application:
name: demo
datasource:
url: jdbc:mysql://localhost:3306/db
username: root
password: 123456
格式对比
| 特性 | properties | yml |
|---|---|---|
| 层级结构 | 无 | 有 |
| 可读性 | 一般 | 好 |
| 重复前缀 | 多 | 少 |
| 列表配置 | 困难 | 简单 |
| 注释符号 | # | # |
yml语法规则
YAML
# 键值对
key: value
# 层级缩进(2空格)
parent:
child: value
# 列表
list:
- item1
- item2
# 行内列表
list: [item1, item2]
# 行内对象
obj: {key1: v1, key2: v2}
# 多行字符串
text: |
第一行
第二行
yml注意事项
yml 缩进必须使用空格,不能用Tab。
YAML
# ❌ 错误:Tab缩进
server:
port: 8080 # Tab缩进会报错
# ✅ 正确:空格缩进
server:
port: 8080 # 2空格缩进
读取配置值
Java
@RestController
public class ConfigController {
@Value("${server.port}")
private int port;
@Value("${spring.application.name}")
private String appName;
@GetMapping("/config")
public Map<String, Object> getConfig() {
Map<String, Object> map = new HashMap<>();
map.put("port", port);
map.put("appName", appName);
return map;
}
}
配置文件优先级
SpringBoot 按以下顺序加载配置:
- 命令行参数
- 系统环境变量
- application.yml(外部)
- application.properties(外部)
- application.yml(内部)
- application.properties(内部)
后加载的配置会覆盖先加载的同名配置。
常用配置示例
YAML
# 服务配置
server:
port: 8080
# 应用配置
spring:
application:
name: my-app
# 日志配置
logging:
level:
root: info
com.example: debug
file:
name: logs/app.log
要点总结
- yml层级清晰,推荐使用
- 缩进必须用空格,不用Tab
- @Value注解读取配置值
- 命令行参数优先级最高
📝 发现内容有误?点击此处直接编辑