说明:

(1) 本篇博客主要解决一下这个疑问:在【Spring Boot电商项目66:上线部署四:把项目部署到服务器;】中,遇到的:

Spring Boot有多个配置文件的时候,在实际启动的时候,选择哪个配置文件?:

● 比如这儿,application.properties是我们在自己的PC机上开发时,项目所用的配置文件;

● application-prod.properties是把项目部署到服务器上时,项目将要用的配置文件;

所以,Spring Boot程序不同的配置文件怎么写、在不同的环境中究竟要使用哪个配置文件?:这是本篇博客想要说明的问题;

目录

一: 参考文章一;

前言

SpringBoot配置文件格式

启动默认环境:如果启动时候,没有指定配置文件,就会使用application.properties这个默认的配置文件;

启动指定环境的方法:启动项目的时候,指定配置文件;

二: 参考文章二;


一: 参考文章一;

此处,参考自【「快学springboot」SpringBoot多环境配置文件】,该文的作者是【u011277123)】;该文亦是转载博客)

前言

我们都知道springboot的配置卸载application.properties配置文件上(或者application.yml)。但是,如果想要把不同的环境(如开发环境,测试环境,生产环境)的配置文件分离,这要怎么做呢?其实,SpringBoot是支持指定不同的配置文件的。

SpringBoot配置文件格式

在Spring Boot中多环境配置文件名需要满足application-{profile}.properties的格式,其中{profile}对应你的环境标识(不一定是.properties文件,也可以是.yml文件)。profile的值,是开发者自定义的,只需要在启动的时候,添加对应的参数,springboot就会去读取该配置文件了。比如我们可以定义为如下格式:

 application-dev.properties:开发环境
 application-test.properties:测试环境
 application-prod.properties:生产环境

如果启动的时候,没有指定配置文件,或者指定的配置文件没有对应的项,则会从默认的配置文件中读取。

默认配置文件为:application.properties(或者application.yml);

**启动默认环境:如果启动时候,没有指定配置文件,就会使用application.properties这个默认的配置文件;

我们可以通过spring.profiles.active参数来指定环境。

假设现在有两个配置文件:

application.properties

 server.port=8080

application-happy.properties

 server.port=9090

如果我们不指定环境,直接启动,则会启动在8080端口:也就是:如果启动的时候,没有指定配置文件,或者指定的配置文件没有对应的项,则会从默认的配置文件中读取。而,默认配置文件为:application.properties(或者application.yml);

 java -jar springboot-0.0.1-SNAPSHOT.jar

ãå¿«å­¦springbootãSpringBootå¤ç¯å¢éç½®æ件

启动指定环境的方法:启动项目的时候,指定配置文件;

1. 命令行启动指定

可以添加-Dspring.profiles.active= <profile>的方式指定

如,指定happy环境:即启动的时候,使用application-happy.properties这个配置文件;

 java -jar "-Dspring.profiles.active=happy" springboot-0.0.1-SNAPSHOT.jar

ãå¿«å­¦springbootãSpringBootå¤ç¯å¢éç½®æ件

这儿就解决了自己的疑问: 而在 在【Spring Boot电商项目66:上线部署四:把项目部署到服务器;​​​​​​​】中,我们在云服务器上启动项目的时候,是使用application- prod.properties这个配置文件的:

同时,也能够发现,为了在启动时,能够选区到指定的配置文件;我们给配置文件起名字的时候,应该按照【application-*.properties】的格式来命名;;;;;这样一来,就可以使用【java -jar “-Dspring.profiles.active=*“springboot-0.0.1-SNAPSHOT.jar】,来指定使用哪个配置文件了;

……………………………………………………

2. 默认配置文件指定

在application.properties中添加

 spring.profiles.active=happy

启动程序:

ãå¿«å­¦springbootãSpringBootå¤ç¯å¢éç½®æ件

……………………………………………………

3. 在IDEA中指定

在run/debug configuration中,可以配置环境,如下:比如,这儿我们设置:启动项目时,使用application- happy.properties这个配置文件;

ãå¿«å­¦springbootãSpringBootå¤ç¯å¢éç½®æ件

首先,为了排出干扰,可以先把application.properties中的【spring.profiles.active=happy】环境指定去掉;

启动程序:

ãå¿«å­¦springbootãSpringBootå¤ç¯å¢éç½®æ件

程序依然启动在了9090端口,即这儿启动的时候,使用的是application-happy.properties;

说明一下: 启动的时候,如果没有指定配置文件,其会先看【 2. 默认配置文件指定】中,我们是否在application.properties中配置;如果没有就会看【 3. 在IDEA中指定 】,我们是否在IDEA中进行了设置;如果还没有,那么就会使用application.properties;

………………

假如我把happy的指定端口号去掉,留下一个空配置。为了防止Tomcat默认端口8080的情况,把默认配置文件的端口改为7777,然后启动程序:

通过日志,可以看到是读取了happy环境。

「快学springboot」SpringBoot多环境配置文件

通过端口号,可以看到其读取了默认配置中的值。


二: 参考文章二;

此处,参考自【SpringBoot多配置文件(多环境)配置(超详细)】,该文的作者是【怪咖软妹@】;

和第一篇博客相比,本篇博客内容都差不多;

本篇博客提到了,我们在命名配置文件的一个惯常做法;

 dev: 开发环境
 test: 测试环境
 prod: 生产环境(线上)