说明:
(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
启动指定环境的方法:启动项目的时候,指定配置文件;
1. 命令行启动指定
可以添加-Dspring.profiles.active= <profile>的方式指定
如,指定happy环境:即启动的时候,使用application-happy.properties这个配置文件;
java -jar "-Dspring.profiles.active=happy" springboot-0.0.1-SNAPSHOT.jar
这儿就解决了自己的疑问: 而在 在【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
启动程序:
……………………………………………………
3. 在IDEA中指定
在run/debug configuration中,可以配置环境,如下:比如,这儿我们设置:启动项目时,使用application- happy.properties这个配置文件;
首先,为了排出干扰,可以先把application.properties中的【spring.profiles.active=happy】环境指定去掉;
启动程序:
程序依然启动在了9090端口,即这儿启动的时候,使用的是application-happy.properties;
说明一下: 启动的时候,如果没有指定配置文件,其会先看【 2. 默认配置文件指定】中,我们是否在application.properties中配置;如果没有就会看【 3. 在IDEA中指定 】,我们是否在IDEA中进行了设置;如果还没有,那么就会使用application.properties;
………………
假如我把happy的指定端口号去掉,留下一个空配置。为了防止Tomcat默认端口8080的情况,把默认配置文件的端口改为7777,然后启动程序:
通过日志,可以看到是读取了happy环境。
通过端口号,可以看到其读取了默认配置中的值。
二: 参考文章二;
此处,参考自【SpringBoot多配置文件(多环境)配置(超详细)】,该文的作者是【怪咖软妹@】;
和第一篇博客相比,本篇博客内容都差不多;
本篇博客提到了,我们在命名配置文件的一个惯常做法;
dev: 开发环境
test: 测试环境
prod: 生产环境(线上)