欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

SpringBoot之多环境打包与配置文件排除方式,

来源: javaer 分享于  点击 18260 次 点评:52

SpringBoot之多环境打包与配置文件排除方式,


目录
  • SpringBoot项目多环境打包与配置文件排除
    • 多环境配置的实现方法
      • 1. 配置多环境文件
      • 2. 动态切换环境
    • 打包时排除配置文件的方法
      • 1. 使用 Maven 排除配置文件
      • 2. 使用 Gradle 排除配置文件
    • 动态加载外部配置文件
    • 总结

      SpringBoot项目多环境打包与配置文件排除

      在实际开发中,Spring Boot 项目通常需要适配不同的运行环境,例如开发环境、测试环境、生产环境等。这些环境下的配置可能包含敏感信息,例如数据库连接密码、API密钥等。因此,在项目打包时,我们不仅需要支持多环境配置,还要考虑如何排除敏感配置文件,以保证安全性。

      1. 多环境配置的实现方法
      2. 打包时排除配置文件的方法
      3. 动态加载外部配置文件的最佳实践

      多环境配置的实现方法

      1. 配置多环境文件

      Spring Boot 默认加载 application.propertiesapplication.yml 配置文件。

      为了支持多环境配置,可以通过文件命名的方式区分环境,比如:

      • application-dev.yml:开发环境配置
      • application-test.yml:测试环境配置
      • application-prod.yml:生产环境配置

      各环境配置文件可以定义不同的参数。例如,以下是开发和生产环境的数据库配置:

      开发环境:application-dev.yml

      server:
        port: 8081
      
      spring:
        datasource:
          url: jdbc:mysql://localhost:3306/dev_db
          username: dev_user
          password: dev_password

      生产环境:application-prod.yml

      server:
        port: 8080
      
      spring:
        datasource:
          url: jdbc:mysql://prod-server:3306/prod_db
          username: prod_user
          password: prod_password

      2. 动态切换环境

      application.yml 中配置默认激活的环境:

      spring:
        profiles:
          active: dev

      通过命令行参数启动时动态指定环境:

      java -jar your-application.jar --spring.profiles.active=prod

      打包时排除配置文件的方法

      在某些情况下,敏感的配置文件(如 application-prod.yml)可能包含生产环境的重要信息。

      我们希望这些文件在打包时被排除,而不是直接包含在最终的 JAR 包中。

      1. 使用 Maven 排除配置文件

      方法 1:通过 maven-resources-plugin

      在 Maven 的 pom.xml 中,通过 maven-resources-plugin 在资源打包阶段排除文件:

      <build>
          <resources>
              <resource>
                  <directory>src/main/resources</directory>
                  <excludes>
                      <exclude>application-prod.yml</exclude>
                      <!-- 排查所有目录下的所有配置文件 <exclude>**/*.*</exclude> -->
                  </excludes>
              </resource>
          </resources>
      </build>

      方法 2:通过 maven-assembly-plugin

      使用 maven-assembly-plugin 自定义打包配置:

      添加插件配置:

      <build>
          <plugins>
              <plugin>
                  <groupId>org.apache.maven.plugins</groupId>
                  <artifactId>maven-assembly-plugin</artifactId>
                  <version>3.3.0</version>
                  <configuration>
                      <descriptors>
                          <descriptor>src/main/assembly/assembly.xml</descriptor>
                      </descriptors>
                  </configuration>
              </plugin>
          </plugins>
      </build>

      创建 assembly.xml 文件:

      <assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3">
          <id>jar-with-dependencies</id>
          <formats>
              <format>jar</format>
          </formats>
          <fileSets>
              <fileSet>
                  <directory>${project.basedir}/src/main/resources</directory>
                  <excludes>
                      <exclude>application-prod.yml</exclude>
                  </excludes>
              </fileSet>
          </fileSets>
      </assembly>

      执行构建命令:

      mvn clean package

      2. 使用 Gradle 排除配置文件

      在 Gradle 的 build.gradle 文件中,可以通过 processResources 任务排除文件:

      tasks.processResources {
          exclude 'application-prod.yml'
      }

      构建时运行:

      ./gradlew clean build

      动态加载外部配置文件

      为了进一步提高安全性,我们可以将敏感配置文件存储在外部,并通过动态加载的方式使用这些文件。

      1. 存放外部配置文件

      将敏感的配置文件(如 application-prod.yml)存放在服务器的安全路径,例如 /etc/app-config/

      2. 启动时指定外部配置路径

      通过启动参数 --spring.config.location 指定外部配置文件的路径:

      java -jar your-application.jar --spring.config.location=/etc/app-config/application-prod.yml

      3. 配置环境变量

      将配置路径指定为环境变量,启动时自动加载:

      export SPRING_CONFIG_LOCATION=/etc/app-config/
      java -jar your-application.jar

      4. 在配置文件中指定额外路径

      在主配置文件中,使用 spring.config.additional-location 指定额外的加载路径:

      spring:
        config:
          additional-location: file:/etc/app-config/application-prod.yml

      总结

      多环境配置:

      • 为不同的环境创建独立的配置文件(application-dev.ymlapplication-prod.yml)。
      • 使用 spring.profiles.active 动态切换环境。

      配置文件排除:

      • Maven:通过 maven-resources-pluginmaven-assembly-plugin 排除敏感文件。
      • Gradle:通过 processResources 配置排除文件。

      动态加载外部配置:

      • 将敏感文件存储在外部路径,通过启动参数、环境变量或额外路径加载。

      推荐实践:

      1. 敏感信息外部化:避免将敏感信息打包到 JAR 中。
      2. 版本控制:将环境无关的公共配置纳入版本管理,但排除敏感文件。
      3. 环境隔离:通过 CI/CD 流程在不同环境中自动部署相应的配置。

      以上为个人经验,希望能给大家一个参考,也希望大家多多支持3672js教程。

      您可能感兴趣的文章:
      • SpringBoot多环境打包与配置文件排除实践记录
      • SpringBoot Maven打包如何根据环境排除文件
      • SpringBoot 多环境打包最佳实践记录
      • springboot读取.properties配置文件中的map和list类型配置参数方式
      • SpringBoot3使用Jasypt实现加密配置文件
      相关栏目:

      用户点评