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=prod
Spring 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=prod
3)生效步骤
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存放日志
&spm=1001.2101.3001.5002&articleId=160198436&d=1&t=3&u=6ae0ecab42a34264baa093d11434a8ef)
1048

被折叠的 条评论
为什么被折叠?



