手记

你所不知道的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://www.jianshu.com/p/c0eaf1f8c529



0人推荐
随时随地看视频
慕课网APP