Springboot多环境开发


文章目录

  • 一. 前言
  • 二. 单文件版多环境配置
  • 三. 多文件版多环境配置
  • 四. 多环境开发配置技巧
  • 五. 多环境配置分组管理


一. 前言

在日常开发中我们使用的环境可能会不一样,比如开发环境测试环境生产环境,那么这些环境对应的配置也会不一样,如果环境一切换就要更改一套新的配置那么确实过于复杂了,因此Springboot也给我们提供解决方案。

二. 单文件版多环境配置

在单个application.yml配置文件中我们可以使用 --- 分割环境配置,那么如何区分环境呢? 在单个配置文件中我们可以使用 profiles 为环境配置命名,如下案例:

# 应用环境
# 公共配置
spring:
  profiles:
    active: dev # 要使用的环境配置
---
# 设置环境
# 生产环境
spring:
  profiles: pro  # 环境名
server:
  port: 80
---
# 开发环境
spring:
  profiles: dev
server:
  port: 81
---
# 测试环境  新写法跟上面的效果一样
spring:
  config:
    activate:
      on-profile: test # 环境名
server:
  port: 82

启动时Springboot会选择指定的环境配置,其他的环境配置将会被忽略,可以在公共配置中写上环境中一样的配置这样可以减少代码的冗余,在修改配置时也会带来极大的便利吗,但是其实这种配置方式比较过时,下面给大家介绍比较流行的做法。

三. 多文件版多环境配置

上面小编介绍了单文件版的多环境开发,但是这种配置方式对一些配置的私密性不是很友好,代码量都叠加在一个文件这样也不方便代码的阅读,因此有了我们下面要介绍的多文件版环境配置。
[配置文件名]-[环境名].[文件后缀] 的方式命名配置文件,可以在resources目录下创建多个这样的文件如下:
Springboot多环境开发_第1张图片
以 application.yml 作为我们的主配置文件,其余的配置文件作为我们的环境配置文件,将不同的环境配置在其中,对于主配置文件:

# 应用环境
spring:
  profiles:
    active: test #选择的环境配置

通过active属性指定生效的环境配置,其实这种方式就是将上一种方式在文件的基础上进行拆分。这样在开发完成后我们开发人员只要将主配置文件修改好,再由项目经理添加生产的配置文件即可,对一些私密的信息起到了很好的保护作用。

四. 多环境开发配置技巧

在工作中我们对换机的区分不单单可以针对环境,我们还可以以功能来进行环境的区分,如数据库相关的配置文件起一个名字 application-devDB.yml ,缓存相关的配置文件起一个名字application-devRedis.yml 等等。
而在进行指定这些配置时使用include)属性在激活指定环境的情况下,同时对多个环境进行加载使其生效,多个环境间使用逗号分隔,如下:

spring:
	profiles:
		active:dev
		include:devDB,devRedis,devMVC

Springboot多环境开发_第2张图片
对于include属性的属性配置顺序,配置的越前面的权重越高,如果属性冲突以权重更高的配置为主

五. 多环境配置分组管理

但是在Springboot2.4后其实上面这种配置方式也有点过时了,2.4版本后将include属性换成了group属性,通过分组来进行多环境的配置。

spring:
  profiles:
    active: dev  # 指定组名决定生效的环境
    group:
      "dev": devDB,devMVC  # 设置分组 这里dev是组名
      "pro": devDB,proMVC

在开发的过程中有时我们会通过配置maven的配置文件来实现开发时的环境管理,其实Springboot是依赖于Maven来进行启动的。


    <profiles>
        <profile>
            <id>env_devid>
            <properties>
                <profile.active>devprofile.active>
            properties>
		
            <activation>
		
                <activeByDefault>trueactiveByDefault>
            activation>
        profile>
        <profile>
            <id>env_proid>
            <properties>
                <profile.active>proprofile.active>
            properties>
        profile>
    profiles>

读取Maven依赖配置文件中的开发环境,实现POM文件和Springboot配置文件的一致性。

spring:
  profiles:
    active: @profile.active@ #读取maven里面配置的启动环境
    group:
      "dev": devDB,devMVC
      "pro": devDB,proMVC

这样就是实现了Maven和Springboot的环境统一,有时因为IDEA缓存的问题会出现配置不生效我们可以执行一下下Maven生命周期中的compile重新编译加载配置文件的内容,再重新启动项目。
Springboot多环境开发_第3张图片

你可能感兴趣的:(Springboot,spring,boot,java,spring,Maven)