profiles.active多环境开发、测试、部署过程
1、使用场景
在开始讲profiles.active配置时,我们先来考虑几个场景。
我们在开发过程中,经常会碰到多个环境,特别熟数据库,经常是有开发库,测试库,和生产库。一般我们都是连的开发库进行开发,但是有时候也会需要连接测试库,甚至是生产库进行调试工作。我们通常的做法,可能就是直接修改配置文件的数据库连接,需要连哪个库就改成哪个库的连接。可是有些时候我们改来改去经常出错,或者不记得哪个环境的配置了,这时我们可能会想到一次把几个环境的配置都写进来,把不需要的注释掉,这确实是一种可行的办法,但还有没有更好的办法呢?
再说部署时候的场景。一般我们打包里面包含的都是开发库的配置文件,经常部署的时候,需要手动修改部署包里面的配置文件,如果部署到测试环境,就修改成测试环境的数据库,如果是生产环境,就修改成生产环境的数据库。那么有没有办法让一个部署包能同时适配各种不同的环境呢。
接下来我们要讲的profiles.active就可以解决上面的需求。
2、profiles.active
profiles.active表示当前激活的环境参数,他可以是一个字符数组,但一般情况下,我们都是使用单个字符,例如dev,test,prod来标识。这里我们还是以数据库配置为例,假设我们原来的application.yml里面配置的数据源是本地数据源,现在我们再来配置一个开发库,以dev作为环境标识。
我们将application.yml复制一份,命名为application-dev.yml,application-{profile-name}.yml,命名规则就是这样的。然后我们把dev里面的数据库名改成spring_boot_study_dev,其他不用的配置删掉。
这就完成了我们开发环境的配置文件编写。
接着,我们再来一份测试环境的配置。
这里,我们已经完成了多个环境配置文件的编写。可以看到,不同环境的配置我们写在不同的配置文件里面,相同的配置我们使用application.yml里面的配置,可以认为是默认配置。我们还差最后一步,使用profiles.active来激活我们当前的需要使用的环境。
3、profiles.actvie使用
profiles.active配置的方式也有几种,我们从最简单的开始。我们可以在application.yml里面直接配置spring.profiles.active属性。
这样我们就指定了当前的环境变量,现在我们来启动程序。
我们可以看到日志里面打印了当前profiles active 是dev,说明我们的配置生效了,其实我们后面还可以看到程序并没有启动完成,因为我们并没有创建spring_boot_study_dev这个数据库,这正好再一次证明我们的配置已经生效。
其实在我们以前没有配置profiles.active时,默认激活的是default。
现在我们可以通过修改spring.profiles.active属性来快速的切换环境了。这里笔者要再次提醒一下大家,当我们配置成dev的时候,我们的程序是会读取application-dev.yml和application.yml两个配置文件,spring会将两个配置文件里面的配置进行一个合并,如果两个文件里面有相同的配置项,将会以application-dev.yml里面的优先级为高,即dev里面的配置将会覆盖默认的配置。
除了改配置文件,我们还可以在eclipse指定环境变量
通过配置环境变量,同样能生效,并且,如果在环境变量和配置文件同时配置了的情况下,环境变量的优先级会高于配置文件。
这两种修改spring.profiles.active的方式是开发时常用的,但是他并不能解决我们部署时候的问题。
假设我们是使用jar包运行,我们可以在执行java -jar命令的时候增加-Dspring.profiles.active=test参数的方式指定环境。
这种配置方式,跟我们修改eclipse环境变量的原理是一样的。这样只要我们部署包里面包含了各个环境的配置,我们就可以一个部署包直接在多个环境使用,只需在启动的时候指定环境名即可。
那如果是Tomcat部署的war包怎么处理呢。这里以linux版本为例,找到catalina.sh文件,修改JAVA_OPTS参数,增加我们需要配置的环境变量,这样只要这个Tomcat里面部署的应用,spring.profiles.active值都是同一个值。
4、总结
这节主要讲如何使用profiles.active这个变量,让我们在开发过程快速切换环境配置,以及如何使一个部署适配各种不同的环境。如果我们的部署包可以不用修改配置文件,就直接运行,这就为我们以后的自动部署,自动运行扫清了路障。不过,有一点需要注意的是,我们将多个环境的配置都放到了部署包,会不会存在将其他环境的敏感配置项泄露给了其他人的情况。
到此这篇关于profiles.active多环境开发、测试、部署的文章就介绍到这了,更多相关profiles.active多环境开发部署内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
相关文章