Springboot中的多环境开发

时间:2022-10-09 13:54:45

目录

多环境开发(yaml版)

多环境开发(yaml版)多配置文件格式

1、主启动配置文件application.yml 

2、环境分类配置文件application-pro.yml

3、环境分类配置文件application-dev.yml

4、环境分类配置文件application-test.yml

多环境开发(properties版)多配置文件格式

多环境分组管理

include属性

group属性

 maven中控制


多环境开发(yaml版)

yml配置文件中



#启动指定环境
spring:
  profiles:
    active: dev

---
#设置生产环境
spring:
  profiles: pro

server:
  port: 88
---
#设置开发环境
spring:
  profiles: dev

server:
  port: 89
---
#设置测试环境
spring:
  profiles: test

server:
  port: 90

测试运行 

Springboot中的多环境开发

小结 

 1、多环境开发需要设置多种常用环境,比如开发、生产、测试环境

2、yaml格式中设置多环境使用---区分环境设置边界

3、每种环境的区别再与加载的配置属性不同

4、启用某种环境是需要指定启动时使用该环境

多环境开发(yaml版)多配置文件格式

分成四个单独的yml配置文件

Springboot中的多环境开发

1、主启动配置文件application.yml 

spring:
  profiles:
    active: dev

2、环境分类配置文件application-pro.yml

server:
  port: 80

3、环境分类配置文件application-dev.yml

server:
  port: 81

4、环境分类配置文件application-test.yml

server:
  port: 82

 测试得

Springboot中的多环境开发

 多环境开发配置文件说明:

主配置文件中设置公共配置(全局属性)

环境分类配置文件中常见于设置各自属性(局部)

独立的配置文件有利于维护更新。

多环境开发(properties版)多配置文件格式

和yml基本一致,只是把yml配置文件后缀改成properties然后按照语法格式即可

如:

server.port=9090

注:properties支持多文件的配置,不支持单一文件(即开发测试运行放在一个配置文件中的)

多环境开发独立配置文件书写技巧

多环境分组管理

根据功能对配置文件中的信息进行拆分,并制作成独立的配置文件,命名规则如下

application-devDB.yml

application-devRedis.yml

application-devMVC.yml

include属性

Springboot中的多环境开发

 dev中

server:
  port: 8010

devDB

server:
  port: 8011

devMVC中

server:
  port: 8012
  servlet:
    context-path: /ok

Springboot中的多环境开发

在include中, active是主配置,内容最后加载,后加载的相同属性会覆盖前面加载的,加载顺序也是从左到右。

group属性

在SpringBoot2.4之后支持group属性,开始使用group属性替代include属性,降低了配置书写量

使用group属性定义多种主环境与子环境的包含关系。

spring:
  profiles:
    active: dev
    group:
      "dev": devDB,devMVC
      "pro": proDB,proMVC

运行结果: 

Springboot中的多环境开发

 加载的顺序是主配置先加载其余配置按从左到右,所以有相同的部分看最右边的值

 maven中控制

 <profiles>
        <profile>
            <id>env_dev</id>
            <properties>
                <profile.active>dev</profile.active>
            </properties>
            <activation>
                <!--  <activeByDefault>true</activeByDefault>-->
            </activation>
        </profile>

        <profile>
            <id>env_pro</id>
            <properties>
                <profile.active>pro</profile.active>
            </properties>
            <activation>
<!--                默认开启-->
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>

    </profiles>

application.yml 

spring:
  profiles:
    active: @profile.active@
    group:
      "dev": devDB,devMVC
      "pro": proDB

当maven与SpringBoot同时对多环境进行控制时,以Maven为主

SpringBoot使用@..@占位符读取Maven对应的配置属性值

基于SpringBoot读取Maven配置属性的前提下,如果在Idea测试工程师pom.xml每次更新需要手动compile方可以生效