• Spring Boot 多环境配置


    目录

    • 前言
    • Spring Boot 自带的多环境配置
      • 创建不同环境的配置文件
      • 指定运行的环境
    • Maven 的多环境配置
      • 创建多环境配置文件
      • 定义激活的变量
      • pom 文件中定义 profiles
      • 资源过滤
      • 总结
    • 总结

    前言

    日常开发中至少有三个环境,分别是开发环境(dev),测试环境(test),生产环境(prod)。

    不同的环境的各种配置都不相同,比如数据库,端口,IP地址等信息。

    那么这么多环境如何区分,如何打包呢?

    本篇文章就来介绍一下Spring Boot 中多环境如何配置,如何打包。

    Spring Boot 自带的多环境配置

    Spring Boot 对多环境整合已经有了很好的支持,能够在打包,运行间自由切换环境。

    那么如何配置呢?下面将会逐步介绍。

    创建不同环境的配置文件

    既然每个环境的配置都不相同,索性将不同环境的配置放在不同的配置文件中,因此需要创建三个不同的配置文件,分别是application-dev.propertiesapplication-test.propertiesapplication-prod.properties

    「注意」:配置文件的名称一定要是application-name.properties或者application-name.yml格式。这个name可以自定义,主要用于区分。

    此时整个项目中就有四个配置文件,加上application.properties

    指定运行的环境

    虽然你创建了各个环境的配置文件,但是Spring Boot 仍然不知道你要运行哪个环境,有以下两种方式指定:

    配置文件中指定

    application.properties或者application.yml文件中指定,内容如下:

    # 指定运行环境为测试环境
    spring.profiles.active=test

    以上配置有什么作用呢?

    如果没有指定运行的环境,Spring Boot 默认会加载application.properties文件,而这个的文件又告诉Spring Boot 去找test环境的配置文件。

    运行 jar 的时候指定

    Spring Boot 内置的环境切换能够在运行Jar包的时候指定环境,命令如下:

    java -jar xxx.jar --spring.profiles.active=test

    以上命令指定了运行的环境是test,是不是很方便呢?

    Maven 的多环境配置

    Maven本身也提供了对多环境的支持,不仅仅支持Spring Boot项目,只要是基于Maven的项目都可以配置。

    Maven对于多环境的支持在功能方面更加强大,支持JDK版本资源文件操作系统等等因素来选择环境。

    如何配置呢?下面逐一介绍。

    创建多环境配置文件

    创建不同环境的配置文件,分别是application-dev.propertiesapplication-test.propertiesapplication-prod.properties

    加上默认的配置文件application.properties同样是四个配置文件。

    定义激活的变量

    需要将Maven激活的环境作用于Spring Boot,实际还是利用了spring.profiles.active这个属性,只是现在这个属性的取值将是取值于Maven。配置如下:

    spring.profiles.active=@profile.active@

    profile.active实际上就是一个变量,在maven打包的时候指定的-P test传入的就是值。

    pom 文件中定义 profiles

    需要在mavenpom.xml文件中定义不同环境的profile,如下:

    <!--定义三种开发环境-->
        <profiles>
            <profile>
                <!--不同环境的唯一id-->
                <id>dev</id>
                <activation>
                    <!--默认激活开发环境-->
                    <activeByDefault>true</activeByDefault>
                </activation>
                <properties>
                    <!--profile.active对应application.yml中的@profile.active@-->
                    <profile.active>dev</profile.active>
                </properties>
            </profile>

            <!--测试环境-->
            <profile>
                <id>test</id>
                <properties>
                    <profile.active>test</profile.active>
                </properties>
            </profile>

            <!--生产环境-->
            <profile>
                <id>prod</id>
                <properties>
                    <profile.active>prod</profile.active>
                </properties>
            </profile>
        </profiles>

    标签<profile.active>正是对应着配置文件中的@profile.active@

    <activeByDefault>标签指定了默认激活的环境,则是打包的时候不指定-P选项默认选择的环境。

    以上配置完成后,将会在IDEA的右侧Maven选项卡中出现以下内容:

    图片1

    可以选择打包的环境,然后点击package即可。

    或者在项目的根目录下用命令打包,不过需要使用-P指定环境,如下:

    mvn clean package package -P test

    maven中的profile的激活条件还可以根据jdk操作系统文件存在或者缺失来激活。这些内容都是在<activation>标签中配置,如下:

    <!--activation用来指定激活方式,可以根据jdk环境,环境变量,文件的存在或缺失-->
      <activation>
           <!--配置默认激活-->
          <activeByDefault>true</activeByDefault>
                    
          <!--通过jdk版本-->
          <!--当jdk环境版本为1.8时,此profile被激活-->
          <jdk>1.8</jdk>
          <!--当jdk环境版本1.8或以上时,此profile被激活-->
          <jdk>[1.8,)</jdk>

          <!--根据当前操作系统-->
          <os>
            <name>Windows XP</name>
            <family>Windows</family>
            <arch>x86</arch>
            <version>5.1.2600</version>
          </os>
      </activation>

    资源过滤

    如果你不配置这一步,将会在任何环境下打包都会带上全部的配置文件,但是我们可以配置只保留对应环境下的配置文件,这样安全性更高。

    这一步配置很简单,只需要在pom.xml文件中指定<resource>过滤的条件即可,如下:

    <build>
      <resources>
      <!--排除配置文件-->
        <resource>
          <directory>src/main/resources</directory>
          <!--先排除所有的配置文件-->
            <excludes>
              <!--使用通配符,当然可以定义多个exclude标签进行排除-->
              <exclude>application*.properties</exclude>
            </excludes>
        </resource>

        <!--根据激活条件引入打包所需的配置和文件-->
        <resource>
          <directory>src/main/resources</directory>
          <!--引入所需环境的配置文件-->
          <filtering>true</filtering>
          <includes>
            <include>application.yml</include>
              <!--根据maven选择环境导入配置文件-->
            <include>application-${profile.active}.yml</include>
          </includes>
        </resource>
      </resources>
    </build>

    上述配置主要分为两个方面,第一是先排除所有配置文件,第二是根据profile.active动态的引入配置文件。

    总结

    至此,Maven的多环境打包已经配置完成,相对来说挺简单,既可以在IDEA中选择环境打包,也同样支持命令-P指定环境打包。

  • 相关阅读:
    ASP.NET Web Form(八)
    ASP.NET Web Form(八)
    软考知识点总结
    软考知识点总结
    c# 引用外部dll
    c# 引用外部dll
    ORA600 [Kcbz_check_objd_typ_1] Running a Job (Doc ID 785899.1)
    oracle创建em
    1918: 等值数目
    1917: 支配值数目
  • 原文地址:https://www.cnblogs.com/fengyun2050/p/15085715.html
Copyright © 2020-2023  润新知