本文共 2030 字,大约阅读时间需要 6 分钟。
在实际开发的过程中,我们的项目会经历很多的阶段(开发->测试->上线),每个阶段的配置也会不同,例如:端口、上下文根、数据库等,那么这个时候为了方便在不同的环境之间切换,SpringBoot 提供了多环境配置,具体步骤如下:
为每个环境创建一个配置文件,命名必须以 application-环境标识.properties|yml
profile是Spring对不同环境提供不同配置功能的支持,可以通过激活不同的环境版本,实现快速切换环 境
例如:application-test.properties 代表测试环境配置 application-dev.properties 代表开发环境配置
但是Springboot并不会直接启动这些配置文件,它默认使用application.properties主配置文件; 我们需要通过一个配置来选择需要激活的环境#比如在配置文件中指定使用dev环境,我们可以通过设置不同的端口号进行测试; #我们启动SpringBoot,就可以看到已经切换到dev下的配置了; spring.profiles.active=dev
#开发环境 #设置内嵌 Tomcat 默认端口号 server.port=8080 #设置项目的上下文根 server.servlet.context-path=/005-springboot-multi-environment-dev
application-product.properties:
#生产环境 #配置内嵌 Tomcat 默认端口号 server.port=80 #配置项目上下文根 server.servlet.context-path=/005-springboot-multi-environment-product
application-test.properties :
#测试环境 #配置内嵌 Tomcat 端口号 server.port=8081 #配置项目的上下文根 server.servlet.context-path=/005-springboot-multi-environment-test
在总配置文件 application.properties 进行环境的激活:
#SpringBoot 的总配置文件 #激活开发环境 #spring.profiles.active=dev #激活测试环境 #spring.profiles.active=test #激活生产环境 spring.profiles.active=product
等号右边的值和配置文件的环境标识名一致,可以更改总配置文件的配置,重新运行 Application,查看启动的端口及上下文根
和properties配置文件中一样,但是使用yml去实现不需要创建多个配置文件,更加方便了 !
server: port: 8081#选择要激活那个环境块spring: profiles: active: dev---server: port: 8082spring: profiles: dev #配置环境的名称---server: port: 8083spring: profiles: test
注意:如果yml和properties同时都配置了端口,并且没有激活其他环境 , 默认会使用properties配 置文件的
外部加载配置文件的方式十分多,我们选择最常用的即可,在开发的资源文件中进行配置
springboot 启动会扫描以下位置的application.properties或者application.yml文件作为Spring boot的 默认配置文件
优先级1:项目路径下的config文件夹配置文件 优
先级2:项目路径下配置文件 优先级3:资源路径下的config文件夹配置文件 优先级4:资源路径下配置文件
优先级由高到底,高优先级的配置会覆盖低优先级的配置
SpringBoot会从这四个位置全部加载主配置文件;互补配置;
我们在低级的配置文件中设置一个项目访问路径的配置来测试互补问题;#配置项目的访问路径 server.servlet.context-path=/kuang
扩展:指定位置加载配置文件
我们还可以通过spring.config.location来改变默认的配置文件位置
项目打包好以后,我们可以使用命令行参数的形式,启动项目的时候来指定配置文件的新位置;这种情 况,一般是后期运维做的多,相同配置,外部指定的配置文件优先级高
java -jar spring-boot-config.jar -spring.config.location=F:/application.properties
转载地址:http://hluki.baihongyu.com/