「快学SpringBoot」配置文件的加载顺序和配置项默认值设置

栏目: Java · 发布时间: 6年前

内容简介:有的时候,配置信息是我们无法在开发过程中就能确定的。比如,给客户开发的项目,客户需要根据自身的情况自定义配置,如数据库配置,加密密钥配置等等。这时候,就需要把配置文件放在外面,让用户自定义配置部署了。SpringBoot应对这种情况简直就是游刃有余,其有多种加载配置文件的方式。下面我们就来认识一下SpringBoot支持把配置文件放在外部。只要把配置文件放在jar包的同级目录下,或者放在同级下的config文件夹中,SpringBoot都会去此处读取配置文件。现在有一个springboot打包程序,和一个配

有的时候,配置信息是我们无法在开发过程中就能确定的。比如,给客户开发的项目,客户需要根据自身的情况自定义配置,如数据库配置,加密密钥配置等等。这时候,就需要把配置文件放在外面,让用户自定义配置部署了。

SpringBoot应对这种情况简直就是游刃有余,其有多种加载配置文件的方式。下面我们就来认识一下

配置文件放在外部

SpringBoot支持把配置文件放在外部。只要把配置文件放在jar包的同级目录下,或者放在同级下的config文件夹中,SpringBoot都会去此处读取配置文件。现在有一个springboot打包程序,和一个配置文件(jar程序打包的时候,没有设置端口号):

「快学SpringBoot」配置文件的加载顺序和配置项默认值设置

现在启动程序,查看结果:

「快学SpringBoot」配置文件的加载顺序和配置项默认值设置

通过java -jar命令启动,发现其已经读取到了9876这个端口号的配置。

同样的,我们可以放在config目录下再测试看看结果:

「快学SpringBoot」配置文件的加载顺序和配置项默认值设置

依然是在9876端口启动了。

以上两个例子,说明了配置文件是可以放在外部的。

配置文件加载顺序

这里总结下,springboot的配置文件可以打包时打jar包内部,也可以放在jar包外部。springboot的配置文件,还可以放在config目录下(这里包括jar包外部同级的config目录,也包括jar内部的config目录)。

总的来说,配置文件的加载顺序如下:

外部config目录 > 外部同级目录 > jar包内部config目录 > jar包内部同级目录

我们不妨在这四个地方都写同一个配置不同的值来验证一下这个顺序。

在resources目录下创建一个config文件夹,文件夹内的配置端口号为9999,文件夹外部的端口号为8888,如下:

「快学SpringBoot」配置文件的加载顺序和配置项默认值设置

启动程序:

「快学SpringBoot」配置文件的加载顺序和配置项默认值设置

通过结果可以看到,读取的是config目录下的配置文件。

打包测试,两个配置文件的配置如下图所示:

「快学SpringBoot」配置文件的加载顺序和配置项默认值设置

启动测试:

「快学SpringBoot」配置文件的加载顺序和配置项默认值设置

发现启动的是config目录下的配置:7777端口。

接下来,我们只需要再证明外部同级目录 > jar包内部config目录,那么上面的结论就成立了。我们把config目录删掉,然后测试:

「快学SpringBoot」配置文件的加载顺序和配置项默认值设置

这证明了上面的结论:外部config目录 > 外部同级目录 > jar包内部config目录 > jar包内部同级目录 是成立了

配置项默认值

通过上面的分析,我们知道了,外部config目录的配置文件是优先级最高的。假如该配置文件没有设置server.port默认值的时候,那么就会往下一级配置文件去寻值,如果所有配置文件都找不到,那么将会读取默认的值。server.port这个默认值,是springboot内部给我们提供的,其默认就是8080。

那么我们要怎么给我们自定义的配置项设置默认值呢?其实很简单,只需要使用一个":"即可

「快学SpringBoot」配置文件的加载顺序和配置项默认值设置

启动程序,访问该接口:

「快学SpringBoot」配置文件的加载顺序和配置项默认值设置

我们没有在任何一处配置文件中配置name的值,所以读取了默认值。

总结

本文讲解了SpringBoot项目的多种放配置文件的方式,并且讲解了各种配置文件的加载顺序。在配置文件中都不存在值的时候,最后才会去读取默认值。配置文件的加载顺序,在实际开发中,还是经常会涉及到的。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

HTTP Essentials

HTTP Essentials

Stephen A. Thomas、Stephen Thomas / Wiley / 2001-03-08 / USD 34.99

The first complete reference guide to the essential Web protocol As applications and services converge and Web technologies not only assume HTTP but require developers to manipulate it, it is be......一起来看看 《HTTP Essentials》 这本书的介绍吧!

html转js在线工具
html转js在线工具

html转js在线工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试