欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

SpringBoot——Profile多环境运行

程序员文章站 2022-03-02 22:29:20
...

Profile的应用场景

假如有开发、测试、生产三个不同的环境,需要定义三个不同环境下的配置。
SpringBoot有三种方式支持profile

方式一: 基于properties文件类型,在文件名称中添加profile参数

application-{profile}.properties
如:
application-dev.properties
application-test.properties
application-production.properties

方式二:基于yml文件类型,在文件名称中添加profile参数

application-{profile}.yml
如:
application-dev.yml
application-test.yml
application-production.yml

方式三:基于yml文件类型,在单个yml格式配置文件中通过spring.profiles属性来定义多套profile配置

# 启动时如果不指定profile,下面的配置生效
server: 
	port: 8080
---
# 定义dev环境参数
spring:
    profiles: dev
server: 
	port: 8081
---
# 定义test环境参数
spring:
    profiles: test
server: 
	port: 8082
---
# 定义prod环境参数
spring:
    profiles: prod
server: 
	port: 8083

启用指定profile配置

直接在配置文件中写死

在application通用配置文件中通过属性

spring.profiles.active=xxx(此处三个x可写dev、test、prod)

直接写死启动时要启用的profile(只适合开发环境)

SpringBoot命令行启动时指定profile

如果 spring.profiles.active 没有指定值,那么只会使用没有指定 spring.profiles 的值,也就是只会加载通用的配置。

并且我们可以在启动应用程序的时候,对 spring.profiles.active 进行指定,这样就不需要每次修改环境都需要手动修改配置文件再编译。

运行 Jar 包时,使用命令行指定使用 xxx 环境参数:

java -jar xxxx.jar --spring.profiles.active=***

命令行中的三个点可写dev、test、prod,注意spring.profiles.active前面有两个“-”

使用 Maven 在打包时只加载特定的 Profiles 配置文件

由于各种各样的原因,我们肯定希望打出哪个环境的包,就只需要包含这个环境的配置文件即可,不想包含其他环境的配置文件,这时候可以直接在打包时直接指定环境。

打包时指定使用哪个环境

  1. 在application通用配置文件中使用占位符指定环境
[email protected]@

maven打包时指定的***,会自动替换掉这里的占位符【@[email protected]

  1. 在pom.xml文件中添加配置(位置:project标签下)
<!-- 配置maven打包时-P参数支持哪些profile -->
<profiles>
    <!--开发环境-->
    <profile>
        <id>dev</id>
        <properties>
            <!-- 
            	这里可以定义多个参数,标签的名字就对应properties文件中的key
                比如:<profileName>在配置文件中写成@[email protected]
             -->
            <profileName>dev</profileName>
        </properties>
    </profile>
    <!--测试环境-->
    <profile>
        <id>test</id>
        <properties>
            <profileName>test</profileName>
        </properties>
    </profile>
    <!--生产环境-->
    <profile>
        <id>prod</id>
        <properties>
            <profileName>prod</profileName>
        </properties>
    </profile>
</profiles>
  1. maven resource插件(位置:build ——> plugins标签下)
<!-- 
	maven resource插件:
    功能:主要是操作配置文件相关。
    比如用maven中的变量替换项目中配置文件中的占位符
    显示指定非maven标准resources目录为resources
 -->
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-resources-plugin</artifactId>
    <version>2.7</version>
    <configuration>
        <!-- 指定配置文件中的占位符是@ -->
        <delimiters>
            <delimiter>@</delimiter>
        </delimiters>
        <useDefaultDelimiters>false</useDefaultDelimiters>
    </configuration>
</plugin>
  1. 使用maven打包命令打包时启用某个(***)环境的配置
mvn clean package -Dmaven.test.skip=true -P ***

maven打包时指定的-P后的***,可写dev、test、prod

  1. 命令行运行jar包:
java -jar xxxx.jar

打包时不指定使用哪个环境

  1. 在pom.xml文件中添加配置(位置:project标签下)
<profiles>
    <!--开发环境-->
    <profile>
        <id>dev</id>
        <properties>
            <profileName>dev</profileName>
        </properties>
        <!-- 如果打包时没有指定-P参数,默认使用activeByDefault为true的profile -->
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
    </profile>
    <!--测试环境-->
    <profile>
        <id>test</id>
        <properties>
            <profileName>test</profileName>
        </properties>
    </profile>
    <!--生产环境-->
    <profile>
        <id>prod</id>
        <properties>
            <profileName>prod</profileName>
        </properties>
    </profile>
</profiles>
  1. 使用maven打包命令打包时启用某个(***)环境的配置
mvn clean package
  1. 命令行运行jar包:
java -jar xxxx.jar