你所不知道的spring boot多环境配置

本篇文章建立在已有spring boot和idea使用基础之上。没有使用过的童鞋也可以大概了解一下。
我们都知道,spring boot中可以进行多环境配置,通常配置的文件名需要符合application-{profile}.properties或者application-{profile}.yml。

yml与properties之间的优先级

application.yml与application.properties

在正式说明如何在系统系统时进行配置文件的选择之前,我们先来做个小实验。究竟application.properties和application.yml两者之间的优先级谁更高一些呢?我们首先写了一个简单的web项目,在里面分别写了一个application.yml和application.properties文件,分别将两者设置不同的端口。
在yml中设置端口为8081:
图片.png
在properties中设置端口为8082:
图片.png
然后运行项目,可以看到系统端口为8082,也就是实际上用来properties的配置:
图片.png

application-dev.yml与application-dev.properties

然后我们看看application-dev.yml与application-dev.properties之间的优先级。这里我们顺便就说明一下,如何去加载某个环境配置文件。第一个实验中,我们知道了实际起作用的是application.properties,那么我们就在里面选择环境配置文件,注意这里需要将application.properties中之前设置的端口配置去掉,否则会影响本次实验,配置语句如下:

spring.profiles.active=dev

配置如图:
图片.png
同时在resource目录中建立application-dev.properties和application-dev.yml,里面分别进行配置端口为8083和8084,如下图所示:
图片.png
图片.png
然后,我们启动系统,发现系统端口为8083,也就是application-dev.properties起作用了:
图片.png

加载环境配置

在刚才的实验中已经展示了其中一种加载环境配置文件的方式,还有其他方式吗?当然还有呀!

1 启动参数后加入–spring.profiles.active=dev

在idea中,点击run/edit configurations:
图片.png
在program arguments中填入参数:
图片.png
运行项目(注意将之前application.properties中的设置去掉,否则无法分辨是我们加入参数的效果还是之前配置的效果):
图片.png

2 JVM参数后加入-Dspring.profiles.active=dev

如图配置:
图片.png
然后启动项目,结果符合预期:
图片.png

3 加入环境参数中

图片.png
在application-dev.yml中加入配置:

server:
  port: 8081

启动项目,结果符合预期:
图片.png


以上操作都在windows中进行,在mac中又会有些不同。
在application.properties中设置和在jvm参数中设置的方法依然有效,但是在program arguments中加入参数却无效了。
设置如下:
图片.png
application-prod.yml文件中的配置如下:

server:
  port: 8088

启动项目,可以看到仍然是默认的8080端口:
图片.png
关于这块,后续我可能还会继续将研究的内容发布上来,想要了解的朋友可以持续关注。

至此,本篇文章到此结束,喜欢的童鞋可以点个赞。
欢迎转载,转载时请注明原文地址:https://blog.csdn.net/m0_37595562/article/details/80646014
童鞋们如果有疑问或者想和我交流的话有两种方式:

第一种

评论留言

第二种

邮箱联系:[email protected]

猜你喜欢

转载自blog.csdn.net/m0_37595562/article/details/80646014