APP下载
报价宝  ›  科技  › 

你知道SpringBoot中配置档案的载入顺序吗

报价宝 来源:baojiabao.com 发布时间:2019-11-01 21:59:00 09月12日更新
报价宝综合消息你知道SpringBoot中配置档案的载入顺序吗

往期文章

“快学Docker”Docker简介、安装和Hello World实现

“快学springboot”使用springboot实现传送邮件功能

为什么阿里Java规约手册要求谨慎使用Arrays.asList方法

前言

有的时候,配置资讯是我们无法在开发过程中就能确定的。比如,给客户开发的专案,客户需要根据自身的情况自定义配置,如数据库配置,加密金钥配置等等。这时候,就需要把配置档案放在外面,让使用者自定义配置部署了。

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

配置档案放在外部

SpringBoot支援把配置档案放在外部。只要把配置档案放在jar包的同级目录下,或者放在同级下的config资料夹中,SpringBoot都会去此处读取配置档案。现在有一个springboot打包程式,和一个配置档案(jar程式打包的时候,没有设定埠号):

现在启动程式,检视结果:

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

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

依然是在9876埠启动了。

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

配置档案载入顺序

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

总的来说,配置档案的载入顺序如下:

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

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

在resources目录下建立一个config资料夹,资料夹内的配置埠号为9999,资料夹外部的埠号为8888,如下:

启动程式:

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

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

启动测试:

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

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

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

配置项预设值

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

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

启动程式,访问该界面:

我们没有在任何一处配置档案中配置name的值,所以读取了预设值。

总结

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

Tips

如果排版混乱,可以点选下面的连结,到我的部落格检视(由于申请了原创首发,部落格会延迟释出)。
文章标签: 报价宝 降噪耳机价格 耳机价格 红米手机价格 华为手机价格 小米手机价格 电视机价格 笔记本电脑价格 笔记本价格 汽车价格 报价宝 笔记本价格 小米手机价格 红米手机价格 降噪耳机价格