当前位置: 首页 > news >正文

Spring Boot 外置配置(不用改代码、不用重新编译、不用重新打包)

Spring Boot 外置配置完整学习笔记(生产可用版)

适用:Spring Boot 1.x/ 2.x/ 3.x,以你当前 LIMS 项目为例


一、什么是外置配置?

  • 把原本打包在jar内部的application.yml/application.properties放到jar 同级目录
  • 用于:修改配置不用重新打包、不用重新编译、不用改代码
  • 典型场景:改数据库、改日志路径、改端口、切换环境

二、外置配置优先级(核心规则)

优先级从高到低:

  1. 项目运行目录下的配置文件(jar 同级)
  2. classpath:/下(jar 内部)

一句话:外置配置 > jar 内部配置只覆盖你写的项,没写的自动继承内部配置


三、支持的默认文件名(无需改启动命令)

以下名称放在jar 同级目录启动时自动加载,无需任何参数:

1)通用默认名

  • application.yml
  • application.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)特殊定制场景

九、关键结论(背诵版)

  1. 外置配置优先级高于内部
  2. 只覆盖配置项,不需要全量复制
  3. 默认文件名不用改启动命令
  4. 自定义文件名必须指定--spring.config.name
  5. 日志、路径一律使用绝对路径
  6. 生产环境禁止使用/tmp存放日志
http://www.jsqmd.com/news/649606/

相关文章:

  • Performance-Fish:基于三级缓存架构与并行计算实现400%游戏帧率提升的高性能优化框架
  • 从信号处理到深度学习:揭秘分数Gabor变换在SAR图像分析中的神奇效果
  • GAN图像重建效果评估新标准:PIPAL数据集实战指南(附Elo评分系统详解)
  • 江西宜禹学教育揭秘“超级个体”进阶之路——剪辑师会Python薪资提高30% - 博客万
  • 基于AI智能体的防火墙策略智能管理方案
  • 从校园到深信服:一位2023届安全工程师的求职实战与心路历程
  • 终极Sunshine指南:如何打造零延迟的家庭游戏串流服务器
  • 保姆级教程:用MS-Swift在本地GPU上快速拉起Qwen2.5-VL多模态大模型(附WebUI界面)
  • 大麦网自动化抢票脚本:Python技术实现与优化指南
  • Kali Linux 实战:从零部署与配置 BeEF XSS 攻击框架
  • PlayCover深度解析:2025年Apple Silicon Mac上运行iOS应用的终极架构指南
  • 从MATLAB到Verilog:FIR滤波器设计的无缝协同与实战避坑
  • 技术解析:OC-SORT如何革新多目标跟踪?——从SORT的局限到观测中心化的实践
  • 拜耳阵列(Bayer Pattern)与解马赛克:从原理到实际应用
  • 终极微信聊天记录解密完整指南:三步夺回你的数字记忆自主权
  • 因磁盘IO性能低导致程序An I/O error 报错
  • Vue 组态化管道流动效果:从零构建现代化工业控制系统
  • Ucharts混合图实战:手把手教你实现stack堆叠柱状图+折线图组合
  • 春联生成模型-中文-base保姆级教学:模型量化(INT8)降低显存占用实录
  • 紫光Pango开发实战:从License配置到物理实现的完整流程解析
  • BlenderKit插件:5个简单步骤彻底改变你的3D创作流程
  • Switch大气层系统终极指南:从零开始到精通的自制系统完整教程
  • 贵州旅游团哪家强:康辉国旅(贵阳经济开发区第一营业部)领衔 - 深度智识库
  • 实测Qwen3字幕生成效果:毫秒级对齐,短视频制作效率翻倍
  • SpringBoot实战:从同源策略到CORS,一站式解决前端跨域请求难题
  • 终极Zotero中文文献管理指南:3步解决知网文献识别难题
  • 贵州旅行社资质评估:康辉国旅(贵阳经开区第一营业部)口碑突出 - 深度智识库
  • 银行终于下场养虾Openclaw了,不在观望,银行利润不断走高,
  • 锐捷AP(AP520,AP720,AP3320)实战:从零配置远程管理与自动IP分配
  • 不止于S参数:用CST分析波导弯头设计时,别忘了检查这几个关键的场分布图