Springboot多环境配置

本文最后更新于:2024年1月12日 晚上

前情提要

本文是从[如何优雅地部署Springboot in Ubuntu]一文中摘录的,为了便于检索

正片

为什么需要Springboot多环境配置呢

主要原因是我们在开发环境和生产环境(or 测试环境)中对于同一个配置属性可能需要不同的值

例如:数据库密码、日志存放路径、静态资源服务器地址等等

所以最方便的方式是写两套配置文件,然后再不同场景进行切换,如:

  • application.yml
  • application-dev.yml
  • application-prod.yml

注:命名规则:application-{profile}.yml
注:同名属性优先级:具体配置文件 > 通用配置文件(application.yml)
注:其实你想把不同环境配置文件写在一个文件里也可以,用---分割,但是别吧,大哥

诶等等,怎么有三个配置文件

你傻啊,通用的配置放application.yml就好了难道你要写两遍啊

好的,那要怎么切换配置呢

默认情况下,也就是default环境,只启用application.yml or properties(这俩一样的,不多赘述)

有三种方式可以切换

  • application.properties中写上:spring.profiles.active=dev or prod等等
  • java -jar的时候传入命令行参数--spring.profiles.active=prod来激活生产环境配置
  • IDEA中配置:编辑运行/调试配置->活动/有效配置(可以找找,这个简单,主要不想放图了)

怎么知道Springboot现在是什么环境呢?在程序启动的时候会输出

1
2024-01-12 19:41:19.130 INFO [main] - com.mrbean.test.TestApplication  :  The following 1 profile is active: "dev"

好的,酱紫就可以完美切换配置文件了,要是还有什么需要修改的,只要在生成环境新建一个application-prod.yml,就可以覆盖对应的属性了,这个大家应该很懂的,我就不说了

配置文件协作最佳实践

我们刚刚说了,有三个配置文件,但是一旦进入Git多人协作,就会直接爆炸

因为每个人的本地环境是不一样的,所以application-dev.yml势必会被改来改去,然后还上传Git

然后pull的时候就会直接覆盖你的开发配置,就会想要 * 队友了

辣怎么办

要么就是不上传application-dev.yml

那不成啊,那想新增/修改配置,其他成员完全阿巴怎么办

其实我们可以建立application-dev-template.yml文件,作为模板,非必要不修改这个文件

然后每个成员自己根据模板新建application-dev.yml,且加入.gitignore不上传Git

Peace

Ref

31 SpringBoot多环境的切换(生产环境、开发环境、测试环境)_spring boot生产和开发环境-CSDN博客


Springboot多环境配置
https://mrbeancpp.github.io/2024/01/12/Springboot多环境配置/
作者
MrBeanC
发布于
2024年1月12日
许可协议