Spring Boot 外置配置(不用改代码、不用重新编译、不用重新打包)
Spring Boot 外置配置完整学习笔记(生产可用版)
适用:Spring Boot 1.x/ 2.x/ 3.x,以你当前 LIMS 项目为例
一、什么是外置配置?
- 把原本打包在
jar内部的application.yml/application.properties放到jar 同级目录 - 用于:修改配置不用重新打包、不用重新编译、不用改代码
- 典型场景:改数据库、改日志路径、改端口、切换环境
二、外置配置优先级(核心规则)
优先级从高到低:
- 项目运行目录下的配置文件(jar 同级)
classpath:/下(jar 内部)
一句话:外置配置 > jar 内部配置只覆盖你写的项,没写的自动继承内部配置
三、支持的默认文件名(无需改启动命令)
以下名称放在jar 同级目录,启动时自动加载,无需任何参数:
1)通用默认名
application.ymlapplication.properties
2)按环境区分(多环境必备)
application-dev.yml开发环境application-test.yml测试环境application-prod.yml生产环境
使用方式:启动命令指定环境:
plaintext
--spring.profiles.active=prodSpring Boot 会自动加载:
plaintext
application-prod.yml四、自定义配置文件名(如 newTest.yml)
必须修改启动命令,否则不识别!
示例:配置文件名:newTest.yml
启动参数增加:
plaintext
--spring.config.name=newTest注意:后缀 .yml 不用写
五、外置配置内容怎么写?(最重要)
不需要把整个配置复制出来!
只写你要修改 / 覆盖的项,其余自动使用 jar 内部配置。
例:只想改日志路径外置application.yml只需要写:
yaml
logging: file: name: /home/lims/LimsDeploy/lims-server/logs/lims-server.log六、外置配置存放位置规范(生产环境)
推荐位置
plaintext
你的项目目录/ ├── xxx.jar ├── application.yml # 外置配置 └── logs/ # 日志目录日志路径必须使用【绝对路径】
yaml
logging: file: name: /home/lims/LimsDeploy/lims-server/logs/lims-server.log- 相对路径会随启动目录变化,日志乱飞
/tmp目录会被系统自动清理,严禁使用
七、systemd 下使用外置配置示例
以你的项目为例:
1)文件结构
plaintext
/home/lims/LimsDeploy/lims-server/ ├── lims-server-1.0-SNAPSHOT.jar └── application.yml # 外置配置2)lims-server.service
ini
ExecStart=java -jar lims-server-1.0-SNAPSHOT.jar --spring.profiles.active=prod3)生效步骤
bash
运行
# 1. 修改配置后 systemctl daemon-reload # 2. 重启服务 /lims.sh reload-server八、一张表彻底记住(可直接复制进笔记)
表格
| 配置文件名 | 是否需要修改启动命令 | 适用场景 |
|---|---|---|
| application.yml | 否 | 单环境、简单项目 |
| application-prod.yml | 否(需指定 active=prod) | 生产环境标准 |
| 自定义名如 newTest.yml | 是(需 spring.config.name) | 特殊定制场景 |
九、关键结论(背诵版)
- 外置配置优先级高于内部
- 只覆盖配置项,不需要全量复制
- 默认文件名不用改启动命令
- 自定义文件名必须指定
--spring.config.name - 日志、路径一律使用绝对路径
- 生产环境禁止使用
/tmp存放日志
