配置文件(properties 与 yml)
Spring Boot 支持两种主流配置格式:application.properties 和 application.yml。二者功能等价,但 yml 层级更清晰,实际项目更常用。
两种格式对比
application.properties:
server.port=8080
spring.application.name=demo
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=123456
application.yml:
server:
port: 8080
spring:
application:
name: demo
datasource:
url: jdbc:mysql://localhost:3306/test
username: root
password: 123456
| 对比项 | properties | yml |
|---|---|---|
| 格式 | 键值对,平铺 | 树形层级 |
| 可读性 | 配置多时冗长 | 清晰直观 |
| 集合支持 | 需用索引 list[0]=a | 原生支持 - item |
| 注意点 | — | 缩进必须用空格,不能用 Tab |
info
两种文件同时存在时,application.properties 优先级更高,但不建议混用。
常用配置项速查
server:
port: 8080 # 服务端口
servlet:
context-path: /api # 上下文路径
spring:
application:
name: demo # 应用名(微服务中重要)
servlet:
multipart:
max-file-size: 10MB # 文件上传大小限制
jackson:
date-format: yyyy-MM-dd HH:mm:ss # JSON 日期格式
time-zone: GMT+8
logging:
level:
root: info
com.example.demo: debug # 指定包的日志级别
配置加载优先级(从高到低)
- 命令行参数:
java -jar demo.jar --server.port=9090 - 操作系统环境变量
application-{profile}.yml(jar 包外 > jar 包内)application.yml(jar 包外 > jar 包内)@Configuration类上的@PropertySource- 默认属性(
SpringApplication.setDefaultProperties)
读取自定义配置
方式一:@Value 单个注入
@Value("${app.name}")
private String appName;
@Value("${app.version:1.0.0}") // 冒号后为默认值
private String version;
方式二:Environment 对象
@Autowired
private Environment env;
String name = env.getProperty("app.name");
方式三:@ConfigurationProperties 批量绑定(推荐)
见配置绑定。