跳到主要内容
版本:1.0

配置文件(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
对比项propertiesyml
格式键值对,平铺树形层级
可读性配置多时冗长清晰直观
集合支持需用索引 list[0]=a原生支持 - item
注意点—缩进必须用空格,不能用 Tab
信息

两种文件同时存在时,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 # 指定包的日志级别

配置加载优先级(从高到低)​

  1. 命令行参数:java -jar demo.jar --server.port=9090
  2. 操作系统环境变量
  3. application-{profile}.yml(jar 包外 > jar 包内)
  4. application.yml(jar 包外 > jar 包内)
  5. @Configuration 类上的 @PropertySource
  6. 默认属性(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 批量绑定(推荐)

见配置绑定。