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.properties2按环境区分多环境必备application-dev.yml开发环境application-test.yml测试环境application-prod.yml生产环境使用方式启动命令指定环境plaintext--spring.profiles.activeprodSpring Boot 会自动加载plaintextapplication-prod.yml四、自定义配置文件名如 newTest.yml必须修改启动命令否则不识别示例配置文件名newTest.yml启动参数增加plaintext--spring.config.namenewTest注意后缀 .yml 不用写五、外置配置内容怎么写最重要不需要把整个配置复制出来只写你要修改 / 覆盖的项其余自动使用 jar 内部配置。例只想改日志路径外置application.yml只需要写yamllogging: file: name: /home/lims/LimsDeploy/lims-server/logs/lims-server.log六、外置配置存放位置规范生产环境推荐位置plaintext你的项目目录/ ├── xxx.jar ├── application.yml # 外置配置 └── logs/ # 日志目录日志路径必须使用【绝对路径】yamllogging: 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 # 外置配置2lims-server.serviceiniExecStartjava -jar lims-server-1.0-SNAPSHOT.jar --spring.profiles.activeprod3生效步骤bash运行# 1. 修改配置后 systemctl daemon-reload # 2. 重启服务 /lims.sh reload-server八、一张表彻底记住可直接复制进笔记表格配置文件名是否需要修改启动命令适用场景application.yml否单环境、简单项目application-prod.yml否需指定 activeprod生产环境标准自定义名如 newTest.yml是需 spring.config.name特殊定制场景九、关键结论背诵版外置配置优先级高于内部只覆盖配置项不需要全量复制默认文件名不用改启动命令自定义文件名必须指定--spring.config.name日志、路径一律使用绝对路径生产环境禁止使用/tmp存放日志