项目在运行时,是存在很多环境的,比如说开发时有开发环境,在测试,在实施部署项目的时候,环境也是不同。
环境的不同所需要配置的信息也是不同,那么我们就需要引用不同的配置文件,我们需要做的就是自由的切换所需要引用的配置文件。
大家知道Spring Boot默认引用的是application.properties所设置的环境,现在假设有两个环境,一个开发环境,一个测试环境,那么我们的配置文件需要怎么命名?Spring Boot提供了相应的书写方法便于我们去命名,也就是说是提前约定好的,Spring Boot会去识别的一个配置文件的书写方法。
静态切换环境:
1).properties:
格式如下:
application-环境名.properties
我们现在添加两个环境,一个开发一个测试,我们就可以命名为:
application-dev.properties
application-test.properties
application-环境.properties中的环境是可以自己取的,并不要求写死,只是在application后面加上了一个"-"+环境名,代表不同环境下的配置。
(图标不用管它)
创建好后,我们做一个简单的小例子,我们首先在application.properties中设置端口号为8081。在dev的配置文件中设置端口号为8082,test中设置为8083。我们运行主程序,毫无疑问,它会选择使用默认的application.properties的配置的环境信息。
那么我们要如何切换不同的环境呢?填写如下信息。
spring.profiles.active=环境名
在哪里书写呢?是在application.properties中。我们现在来尝试一下。(prefix+属性名=value,我们之前专门讲过如何去查找,大家感兴趣,可以自行找找这个是在哪一个jar中设置的^v^)
然后运行主程序。
改成了相应的端口号,说明这是约定好的,我们只需要写上不同的环境名就可以使用不同的配置环境了,在application.properties中我们可以指定选择某一个具体的环境。
2).yml:
我们现在把相关的application-*.properties代码全部注释掉,然后来使用.yml来试试不同环境的切换是如何实现的,在application.yml中,我们可以在同一个文件中写上不同环境的配置。
我们通过“---”的方式,分隔开不同的环境,先来启动一下主程序。
使用的是我们设置的8084端口,即主配置的信息,那么我们怎么进行切换呢。
和在application.properties中是一样的,不过书写的格式不一样,大家还记得把,不记得可以回过头学习一下,巩固巩固。我们运行主程序。
端口号是8086没有问题,这里有一个有意思的事情,如果你没有把application-test.properties中的端口信息注释掉,那么它是会默认使用的是application-test.properties中配置的环境信息,而不是写在.yml文件中的信息,因为.properties的优先级比.yml的高。
但是不管是.properties还是.yml都是写死的,不够灵活,我们来看一下如何动态的切换环境。
动态切换环境:
i)通过运行参数:
我们可以通过设置IDEA中的Program arguments来设置,右键Run As,选择Run Configurations...
在Arguments中有一个Program arguments,我们设置它的运行环境为dev,但是书写格式和静态的有些不同,我们需要在命令前面加上"--"两个横杠,然后点击运行,我们就会看到我们的端口号变成了8085。
ii)cmd命令:
一个项目通常都是分成了很多部分模块分给程序员去编写,每个模块自己创建一个新的项目,到最后汇总的时候,项目就会打成相应的jar包或者war包,拼合成一个完整的项目。所以很多时候,我们并不能在开发环境中去运行相应的指令,所以在外部环境动态的指定相应的环境,就显得尤为的重要。
我们先把项目打包,右键项目,选择Run As,选择Maven Build...,然后输入package,打包的命令。
如上图所示,在Goals中输入,然后点击Run即可。
如果大家出现Build Failure,不要惊慌,基本都是这个问题了:
No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
如果在控制台提示有相关信息,其实解决方法并不难,链接(如果不是的童鞋,可以将相关错误复制到百度查看原因):
关于Maven项目build时出现No compiler is provided in this environment的处理
好的,解决完问题之后(如果曾经打包失败过的童鞋,需要在填写package命令的地方,先输入clean,点击Run,清除掉上一次没有进行完的打包命令所产生的一些文件),然后我们再次进行打包命令,就会看到控制台打印Build Success的字样,代表我们打包成功了。
我们打包完成后,我们点开我们项目,里面有一个target文件夹,打包好的jar就会存放在里面,右键Refresh,刷新一下,就会看到如下jar文件。
我们右键,点击Properties。
点击红框框里的图标,找到它的文件位置。
在文件的目录路径处,我们输入cmd,回车,打开命令行。(记得要把IDEA中运行的程序给终止,不然会出现端口被占用的情况)
我们在cmd中输入相关命令,成功的切换了不同的配置环境。
输入的格式如下:
java -jar 项目名.jar --spring.profiles.active=环境名
iii)通过vm参数:
这种方法和第一种通过运行参数很像,同样是在IDEA中进行。
我们在主程序中,同样的Run As,Run Configuration...,因为我们刚刚使用了Maven Build,所以要选择回我们的程序。
然后右边的第一个输入框就是我们的运行参数设置切换环境的方法,在下方有一个VM参数,我们同样也可以进行设置,进行切换环境。
不同的是,方法一使用的是在命令前方加上"--",而VM参数需要在前方加上"-D"。后面的命令是一样的,我们运行一下。
同样也是8085,没有问题。
OK,本章就到这里了。
关注博主,更多精彩哦!