【SpringBoot系列】配置多环境配置文件
以前没有自己搭架构,所以一直很好奇为什么配置文件会分为dev、test、prod三种类型的文件。后面虽然慢慢知道这三种文件的作用,可是因为没有实际配置过,所以对它的重要程度感知还不是很明显。后来自己搭建环境的时候,要本地调试、要上测试环境、要发布到生产等等事情,才发现配置多环境的配置文件是多么重要,首先我们先来聊聊这样做,在实际开发中有哪些具体的作用。
一、环境介绍
1.dev环境
在平时开发的时候肯定会有测试环境,但是一方面测试环境构建的时间会比较漫长,所以一般一天就几次,所以在很多时候我们都需要本地进行debug调试。基于这种场景我们首先就需要一份dev环境(中文名称开发环境配置),通过dev配置我们就可以将数据库的地址、服务器的地址、redis、mongodb等地址,配置为自己的本地的服务器,方便我们进行bug调试。
2.test环境
本地开发环境毕竟和真实的环境差距还是很大的,不管从cpu、内存、数据等等这些来看都有很大的差别,最重要的是测试人员自己肯定没办法本地调试,这些非开发人员要参与测试,必须有一个测试环境用来做专门的测试平台。这个时候我们就需要新配置一个test环境(中文名称测试环境),通过test环境,我们的测试人员、app人员、开发人员都可以通过这个环境来做自己的工作。
3.prod环境
如果测试环境的项目经过严格的测试,要发布出去给外网普通用户来用的话,肯定需要一个给所有用户用的环境,这个环境就叫做prod环境(中文名称生产环境)。之前的test环境一般是公司内部局域网才可以访问,但是prod环境是所有只要能连接上互联网的用户都可以访问,没有网络的限制问题,而且prod环境是面向用户,所以一般服务器的性能都会比test环境高的多。
二、实际应用
重点来了,介绍了这么多的环境,那我们在开发过程中怎么进行环境配置呢,在服务器上面又是如何进行环境的区别的呢,不要着急,下面我们一一来介绍一下。
1.开发过程配置
SpringBoot项目本身就支持不同环境引用的支持,我们只需要在spring.profiles.active=‘环境的名称’,这样说可能会比较抽象,我们来看一下具体的列子,如下所示:
不同的配置文件必须开头是application-,结尾可以随意定义,这边我们用dev、test、prod分别来表示开发、测试、生产环境。然后我们在引用环境的时候只要在active后面加上相应的后缀就可以了(也就是application-后面的内容),通过这种方式我们在开发过程中就可以随意的进行不同环境的切换了。
2.jar方式配置
那有的同学会问,如果我们是以jar形式来启动SpringBoot项目呢,这个时候我们该怎么办呢。不要着急,SpringBoot早就想到这一点了,它支持通过jar后面追加命令的方式启动服务。比如我们要启动jar服务,然后将环境配置设置为test环境,我们就可以通过如下的命令来实现。
java -jar xxx.jar --spring.profiles.active=test
总结:
SpringBoot为我们提供了超级简单的不同环境配置方案,我们只需要写上符合SpringBoot规范的配置文件就可以实现不同环境的切换了,这边有几点大家需要注意一下,也是在搭建过程中遇到的坑。
坑:
1、配置文件是没办法进行多次继承引用的,简单的所就是application.yml可以引用application-a.yml,但是application-a.yml是没办法通过spring.profiles.active=‘环境的名称’来引用application-b.yml。
2、在通过jar启动服务的时候,要特别注意一点的是, --spring.profiles.active=test必须放在第一个位置,因为Spring Boot项目所有的配置信息都可以通过外部传参的形式来改变,这也就意味着可以有传多个参数,但是我们第一个参数必须是spring.profiles.active,否则配置不会被替换。
3、dev、test、prod的配置文件名称一定要符合"application-名称"规范,否则会造成引用失败。
要更多干货、技术猛料的孩子,快点拿起手机扫码关注我,我在这里等你哦~