带你了解 Spring Boot 四种激活 profiles 方法

本文将带领大家了解 Spring Boot 应用程序激活 profiles 的几种方式,以及各种方式的优先级。

什么是 profiles 这里就不赘述了,profiles 主要用来实现动态切换项目环境,如:开发环境 dev,测试环境 test 以及正式环境 prod,下面将介绍四种方式去激活 profiles。

注意:激活的 profiles 需要在项目的 resources 目录创建对应的配置文件,配置文件名称格式为 application-{profile}.yml

命令行方式

该方式是一种外部配置的方式,在执行 java -jar 命令时可以通过 –spring.profiles.active=dev 的方式进行激活指定的 profiles 列表。例如:

java -jar my-v1.0.jar --spring.profiles.active=dev

Java系统属性方式

该方式也是一种外部配置的方式,在执行 java -jar 命令时可以通过 -Dspring.profiles.active=dev 的方式进行激活指定的 profiles 列表。例如:

java -Dspring.profiles.active=dev -jar my-v1.0.jar

系统变量方式

Mac/Linux

编辑环境变量配置文件 /etc/profile,添加名为 SPRING_PROFILES_ACTIVE 的环境变量,如下所示:

export SPRING_PROFILES_ACTIVE=dev

Windows

新建一个名为 SPRING_PROFILES_ACTIVE 的系统环境变量,设置变量的值为 dev 即可。

注意:该方式适用于系统下所部署统一环境的 Spring Boot 应用程序,如统一部署的都是 prod 环境的应用程序。

配置文件方式

该方式是最常用的方式,不过灵活性不强,局限性比较大,不建议使用这种方式来激活配置文件。

我们只需要在 application.yml 配置文件添加配置即可,使用方式如下所示:

spring:
  profiles:
    # 激活 profiles
    active: dev

注意,配置文件方式通常结合 Maven 进行使用,在 Maven 的 pom.xml 文件中定义 profiles,如下:

<profiles>
    <profile>
        <id>prod</id>
        <properties>
            <active_profile>prod</active_profile>
        </properties>
    </profile>

    <profile>
        <id>test</id>
        <properties>
            <active_profile>test</active_profile>
        </properties>
    </profile>

    <profile>
        <id>dev</id>
        <properties>
            <active_profile>dev</active_profile>
        </properties>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
    </profile>
</profiles>

然后,在 Spring Boot 的配置文件中直接引用上面定义的属性名 active_profile,当进行 Maven 编译时会自动将属性名替换成对应的值,例如:

spring:
  profiles:
    # 激活 profiles
    active: @active_profile@

优先级

命令行方式(最高) > Java系统属性方式 > 系统变量方式 > 配置文件方式(最低)

激活多个 profile

如果需要激活多个 profile 可以使用逗号隔开,如:

java -jar my-v1.0.jar --spring.profiles.active=dev,dev2
天下之事常成于困约,而败于奢靡。——陆游
0 不喜欢
说说我的看法 -
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号