SpringBoot多环境启动

多环境启动

多环境启动基本格式

我们在开发中和上线后的环境中, 有些配置文件的值是不相同的, 但是当项目上线后我们肯定是不能修改配置文件的, 于是我们需要针对不同的环境进行不同的配置

例如下面, 在不同环境下, 数据库的连接信息是不同的

在这里插入图片描述

我们需要配置多环境开发, 让项目在不同的环境下切换不同的配置信息

方便理解, 这里我对三种环境设置不同的端口号, 如果端口号发生变化就说明切换环境成功:

application.yml文件中, 设置三种环境, 环境间使用---进行分隔

server:
  port: 80

---

server:
  port: 81

---

server:
  port: 82

通过spring下的profiles属性, 分别设置生产环境、开发环境和测试环境

# 开发环境
spring:
  profiles: dev
server:
  port: 80

---
# 生产环境
spring:
  profiles: pro
server:
  port: 81

---
#测试环境
spring:
  profiles: test
server:
  port: 82

在通过spring下的profiles下的active属性设置当前的运行环境

# 设置启用的环境
spring:
  profiles:
    active: dev

---
# 开发环境
spring:
  profiles: dev
server:
  port: 80

---
# 生产环境
spring:
  profiles: pro
server:
  port: 81

---
#测试环境
spring:
  profiles: test
server:
  port: 82

多环境开发我们就配置完成了, 但是我们发现profiles是被打了删除线的, 说明是过时的格式

扫描二维码关注公众号,回复: 15490965 查看本文章

在这里插入图片描述

当前推荐的格式如下

# 设置启用的环境
spring:
  profiles:
    active: test

---
# 开发环境
spring:
  config:
    activate:
      on-profile: dev
server:
  port: 80

---
# 生产环境
spring:
  config:
    activate:
      on-profile: pro
server:
  port: 81

---
#测试环境
spring:
  config:
    activate:
      on-profile: test
server:
  port: 82

上面的配置方式适用于yml和yaml文件, 那么properties文件如何配置呢

首先在application.properties设置启用的环境

# application.properties

# 设置启用的环境
spring.profiles.active=dev

在分别创建application.dev.properties、application.pro.properties、application.test.properties文件

# application.dev.properties

# 开发环境dev
server.port=80
# application.pro.properties

# 生产环境pro
server.port=81
# application.test.properties

# 测试环境test
server.port=82

多环境启动命令格式

我们可以将项目打成一个jar包, 并通过命令的方式切换并启动环境

在将项目打包成jar包之前, 我们先解决一些配置文件中乱码问题, 将配置文件的编码设置为UTF-8

在这里插入图片描述

为避免上一次影响我们这一次的测试, 建议双击clear

在这里插入图片描述

双击package进行打包

在这里插入图片描述

打包完成后, 我们通过命令行启动打包后的jar包

可以发现目前启动的是80端口, 说明使用的是我们配置的开发环境

在这里插入图片描述

切换环境并启动项目, 例如切换到test环境:

  • 带参数启动SpringBoot: java –jar 文件名称.jar –-spring.profiles.active=test

在这里插入图片描述

我们也可以传递参数, 临时修改端口: java –jar 文件名称.jar –-server.port=99

在这里插入图片描述

多环境启动的兼容性

Maven中设置多环境, SpringBoot中也设置多环境, 我们应该让SpringBoot引用Maven中的属性, 让Maven起主导作用

在pom.xml文件中设置Maven多环境

<profiles>
    <!--开发环境-->
    <profile>
        <id>dev</id>
        <properties>
            <profile.active>dev</profile.active>
        </properties>
    </profile>
    <!--生产环境-->
    <profile>
        <id>pro</id>
        <properties>
            <profile.active>pro</profile.active>
        </properties>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
    </profile>
    <!--测试环境-->
    <profile>
        <id>test</id>
        <properties>
            <profile.active>test</profile.active>
        </properties>
    </profile>
</profiles>

SpringBoot中引用Maven属性

# 设置启用的环境
spring:
  profiles:
    active: ${
    
    profile.active}

---
# 开发环境
spring:
  config:
    activate:
      on-profile: dev
server:
  port: 80

---
# 生产环境
spring:
  config:
    activate:
      on-profile: pro
server:
  port: 81

---
#测试环境
spring:
  config:
    activate:
      on-profile: test
server:
  port: 82

pom.xml文件中安装插件解析resource文件中的内容(解析${}占位符)

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-resources-plugin</artifactId>
  <version>3.2.0</version>
  <configuration>
    <encoding>utf-8</encoding>
    <useDefaultDelimiters>true</useDefaultDelimiters>
  </configuration>
</plugin>

使用maven打包并命令行启动

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m0_71485750/article/details/128064529
今日推荐