部署springboot项目读取外部配置文件实现过程
部署springboot项目读取外部配置文件
我们在部署springboot项目的时候,经常会遇到这样的情况:
测试环境与生产环境的配置不一样,这就导致每次部署的时候都要修改配置文件再打包,即使用了nacos进行配置管理,但测试环境与生产环境的nacos部署的地方肯定不一样,所以每次部署的时候还是需要修改配置文件里的nacos地址,这样比较麻烦,有时候还可能会忘记修改。
经过查资料了解到其实springboot可以读取外部配置文件,即在springboot应用启动后,不直接使用jar包里面的配置文件,而是读取某个目录下的配置文件,然后进行覆盖,从而实现应用与配置分离,这样就不用每次部署都修改配置文件了。
官方文档里的描述

从官方文档里的描述可以知道:
SpringApplication读取配置文件的方式有四种,并且是有优先级的,所有方式下的配置文件都会被读取,高优先级的内容会覆盖低优先级的内容
四种读取方式
如下:
- 1、在jar包的同一目录下建一个config文件夹,然后把配置文件放到这个文件夹里
- 2、直接把配置文件放到jar包的同级目录
- 3、在classpath下建一个config文件夹,然后把配置文件放进去
- 4、在classpath下直接放配置文件
项目被打成jar包后,配置文件会被放在BOOT-INF的classes目录下:

这就是上面所说的第四种读取方式,也是优先级最低的读取方式
综上所述,我们可以使用第一、二种配置文件读取方式来实现应用与配置分离,我这里是用的第二种方式,将配置文件放到了jar包的同级目录:

这样当项目启动的时候,它就会去读取这个配置文件,并且覆盖掉jar包里的配置文件
如果想把配置文件放在任意目录,那就需要在jar包的启动命令里指定配置文件的路径,
参数如下:
spring.config.location=xxx
完整配置示例如下:
nohup java -jar nms-alarm-manager.jar --spring.config.location=/home/my-config/bootstrap.yml &
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
MybatisX-Generator不生成domain文件夹的问题及解决
在使用MybatisX-Generator生成数据库表实体时,如果发现没有生成domain文件夹以及User.java文件,是因为MybatisX版本更新,最新版需要在options里额外勾选model才能生成domain,勾选model并点击finish后,成功生成domain文件夹及User.java文件2025-01-01
带你走进Maven的大门-最全Maven配置及集成idea工具总结
Maven项目对象模型(POM),是一个项目管理工具可以通过一小段描述信息来管理项目的构建,报告和文档的软件.那我们想要在IDEA中使用Maven得进行一些配置,接下来我们具体看一下是如何配置使用的,需要的朋友可以参考下2021-06-06


最新评论