核心概念:application.properties 与 application.yml
Spring Boot 默认认这两种配置文件,二选一就够了。实际项目里我更常见到 application.yml,层级清楚,后面加配置也不容易乱。
application.properties(传统键值对)
server.port=8081
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=secret
logging.level.com.example.demo=debug
application.yml(YAML 格式)
server:
port: 8081
spring:
datasource:
url: jdbc:mysql://localhost:3306/mydb
username: root
password: secret
logging:
level:
com.example.demo: debug
YAML 里最容易踩坑的还是缩进:只能用空格,别混 Tab;冒号后面也要留一个空格,不然解析器会直接给你脸色看。
配置从哪里读,谁覆盖谁
Spring Boot 会按优先级加载 application 配置,后面的会覆盖前面的:
- 当前项目根目录下的
/config子目录 - 当前项目根目录
classpath:/config,也就是src/main/resources/configclasspath根路径,也就是src/main/resources
这个顺序在本地开发和部署时都很实用。通用配置放在 src/main/resources/application.yml,线上要改数据库、端口这类东西时,直接在 JAR 同级目录建一个 config 文件夹再放一份 application.yml 就行。代码不动,环境自己切开,这比把配置硬塞进包里省心。
外部化配置
除了配置文件,Spring Boot 还支持几种更外层的覆盖方式,优先级通常更高,容器化部署时尤其方便。
命令行参数
java -jar yourapp.jar --server.port=8888 --spring.datasource.url=jdbc:mysql://prod-server:3306/proddb
操作系统环境变量
Spring Boot 会自动识别类似 SPRING_DATASOURCE_URL 这样的环境变量。下划线和大写是关键,别手写成随手起的变量名。
Profile 配置
多环境配置基本绕不开这个。通用配置放一份,开发、测试、生产分别再拆开,切环境时只改激活项。


