我自己的cron json网站
2026/6/26 6:56:17
Spring Boot 采用「主配置文件 + 环境专属配置文件」的模式管理多环境配置,核心规则如下:
Spring Boot 默认识别.properties/.yml/.yaml两种格式,命名需遵循以下规则:
| 配置文件类型 | 命名格式 | 作用 |
|---|---|---|
| 主配置文件(必选) | application.properties/application.yml | 存放所有环境的公共配置 |
| 环境专属配置文件 | application-{profile}.properties/application-{profile}.yml | 存放指定环境的专属配置(如application-dev.yml、application-prod.yml) |
支持 3 种激活方式,优先级从低到高排列:
在application.yml中通过spring.profiles.active激活,可指定多个环境(逗号分隔):
yaml
# application.yml(主配置文件) # 公共配置(所有环境生效) server: port: 8080 # 激活 dev 环境(可多环境:dev,test) spring: profiles: active: dev示例环境配置文件:
yaml
# application-dev.yml(开发环境) spring: datasource: url: jdbc:mysql://localhost:3306/dev_db username: root password: 123456 logging: level: root: debug # 开发环境日志级别yaml
# application-prod.yml(生产环境) spring: datasource: url: jdbc:mysql://192.168.1.100:3306/prod_db username: prod_user password: prod_123456 logging: level: root: info # 生产环境日志级别 server: port: 80 # 生产环境端口打包为 jar 后,启动时通过--参数覆盖:
bash
运行
java -jar your-project.jar --spring.profiles.active=prod设置系统环境变量SPRING_PROFILES_ACTIVE=test,Spring Boot 自动识别并激活 test 环境。
若配置按功能拆分(如数据库、Redis),可通过spring.profiles.include合并:
yaml
# application-dev.yml spring: profiles: include: - db-dev # 合并数据库配置(application-db-dev.yml) - redis-dev # 合并Redis配置(application-redis-dev.yml)plaintext
src/main/resources/ ├── application.yml # 主配置(激活环境) ├── application-dev.yml # 开发环境核心配置 ├── application-prod.yml # 生产环境核心配置 ├── application-db-dev.yml # 开发环境数据库配置 └── application-db-prod.yml # 生产环境数据库配置Spring Boot 加载配置遵循「后加载者优先」原则(后面的配置覆盖前面的),以下按优先级从低到高梳理:
| 优先级 | 加载位置 | 说明 |
|---|---|---|
| 1(最低) | classpath:/ | 项目内部 src/main/resources 目录(默认位置) |
| 2 | classpath:/config/ | 项目内部 src/main/resources/config 目录 |
| 3 | ./ | 应用运行目录(jar 包所在目录) |
| 4 | ./config/ | 应用运行目录下的 config 文件夹(生产环境最常用) |
| 5 | ./config/*/ | 应用运行目录下 config 文件夹的子文件夹(按字母序加载) |
| 6 | Java 系统属性(-D 参数) | 如java -Dserver.port=8089 -jar app.jar |
| 7 | 操作系统环境变量 | 如SPRING_PROFILES_ACTIVE=prod(大写 + 下划线命名) |
| 8 | 命令行参数(-- 参数) | 如java -jar app.jar --server.port=8083 |
| 9 | 激活的 profile 配置文件 | 如 application-prod.yml 覆盖 application.yml |
| 10(最高) | 远程配置中心(Nacos/Apollo 等) | 覆盖所有本地配置 |
假设存在以下配置:
classpath:application.yml:server.port=8080./config/application.yml:server.port=8081java -Dserver.port=8082 --server.port=8083 -jar your-app.jar最终生效端口为8083,优先级顺序:命令行参数 > Java 系统属性 > 外部 config 配置 > 内部配置。
./config/application.yml,无需修改 jar 包即可调整;--spring.profiles.active=test;application-{profile}.yml/properties,主配置存放公共配置;spring.profiles.include拆分功能型配置文件。./config/目录优先级高于项目内部 config,无需打包即可调整配置;