为什么SpringBoot需要用到多环境配置呢?其实多环境,指的就是生产环境、开发环境、测试环境等相互切换,那么此时,如果我们直接修改配置文件,就会造成我们大量的无价值工作,极大的降低我们的工作效率,所以此时,我们就会需要更加高效的实现开发环境切换的方法。
目前来说,我们实现配置切换,大致来说,无非有三种,一是同一个配置文件里面写不同的配置,然后在主配置中选择加载哪一种配置;二是直接写多个配置文件,在主配置文件里面选择配置哪一种配置;三是项目上线之后,直接通过命令的方式,将配置修改为我们需要的配置类型。说到这里哈,有些人会觉得其实只是前两种,第三个不应该单独列出来,这个问题怎么说呢?一千个人一千个哈姆雷特。
这里做测试用,所以就在一个项目里面进行测试,不同的配置里面只写端口,不写其他的,所以就把公共的一样的东西,都列在公共的内容里面
1.建立一个SpringBoot项目这个就略过了,我直接把我已经建好的项目奉上,因为贴图出来内容太多了
在resources文件夹下面建一个名叫 application.yml
的配置文件,并把原本的 application.properties
文件删除,注意,这里只是个人爱好哈,我自己更加偏好用 yml
文件
# 主配置 spring: profiles: active: dev # 选择开发环境的配置 --- # 选配一 server: port: 2222 # 配置的测试环境的端口 spring: profiles: test # 测试环境配置的名称 --- # 选配二 server: port: 1111 # 配置的开发环境的端口 spring: profiles: dev # 开发环境配置的名称
启动项目,查看控制台日志内容,端口是否改变
这里可以看到我的端口号已经统一为我选择的开发环境的端口号1111,说明我的配置是成功了的
创建3个配置文件,主配置文件文件名为 application.yml
,测试环境配置文件名为 application-test.yml
,开发环境配置文件名为 application-dev.yml
。
这里需要进行说明的是,为什么要这样命名,是因为SpringBoot底层就会根据配置文件名的:“-”后面的内容去匹配不同的配置文件,重点在于那个:“-”,所以为了命名规范,我写的名字是这样的。
重启服务器,查看控制台的日志内容查看端口号是否发生改变
这里可以看到我的端口号已经切换为2222,说明我的配置已经成功了
这个方式的前提肯定是我们配置了上面两种方式的其中一种的前提下哈
java -jar projectName.jar --spring.profiles.active=dev
三种方式,亲测有效。