Spring不同环境加载不同配置文件 - resource & profile
我们在使用spring的时候,一般都会有不同的环境需要部署:开发环境、测试环境和生产环境,而不同的环境则会有不同的配置,比如数据库ip。解决这个问题,我所熟悉的有两种策略:
springboot的profile参数配置
pom文件的resource & profile配置
springboot的profile配置
Spring Profiles 允许用户根据环境配置来读取不同的配置文件(dev,test,online 等),可以通过激活、指定参数等方式快速切换环境。
profile多配置文件
在Spring Boot中多环境配置文件名需要满足application-{profile}.properties的格式,其中{profile}对应你的环境标识,比如:
application.yml:主配置文件
application-dev.yml:开发环境
application-test.yml:测试环境
application-online.yml:生产环境
至于哪个具体的配置文件会被加载,需要在application.yml文件中通过spring.profiles.active属性来设置,其值对应{profile}值。
方式一:在一个文件中配置
# 激活配置 spring: profiles: active: dev --- # 配置一 开发环境 spring: profiles: dev server: port: 8060 --- # 配置二 生产环境 spring: profiles: pro server: port: 8061
方式二:多配置文件方式
上面的配置文件都写在一个application.yml中,过于累赘,为了方便查阅和解耦合,推荐多个配置文件方式,然后在主配置文件中激活,具体的步骤如下;
新建yml文件名为application-dev.yml;内容如下
server: port: 8061
新建yml文件名为application-test.yml;内容如下
server: port: 8060
修改application.yml内容如下
spring: # 配置文档激活 profiles: # 激活文档 active: dev
当运行应用程序时,Spring Boot会自动加载application.yml和application-dev.yml文件。application-dev.yml中的配置将覆盖application.yml中相同部分的配置。
请注意,您不需要为每个环境都创建一个配置文件。您可以根据需要为特定的环境创建额外的配置文件。如果您不需要为某个环境添加额外的配置,那么您只需在application.yml中配置即可。