欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot之多環(huán)境打包與配置文件排除方式

 更新時間:2025年04月19日 09:54:42   作者:小小工匠  
這篇文章主要介紹了SpringBoot之多環(huán)境打包與配置文件排除方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

SpringBoot項目多環(huán)境打包與配置文件排除

在實際開發(fā)中,Spring Boot 項目通常需要適配不同的運(yùn)行環(huán)境,例如開發(fā)環(huán)境、測試環(huán)境、生產(chǎn)環(huán)境等。這些環(huán)境下的配置可能包含敏感信息,例如數(shù)據(jù)庫連接密碼、API密鑰等。因此,在項目打包時,我們不僅需要支持多環(huán)境配置,還要考慮如何排除敏感配置文件,以保證安全性。

  1. 多環(huán)境配置的實現(xiàn)方法
  2. 打包時排除配置文件的方法
  3. 動態(tài)加載外部配置文件的最佳實踐

多環(huán)境配置的實現(xiàn)方法

1. 配置多環(huán)境文件

Spring Boot 默認(rèn)加載 application.propertiesapplication.yml 配置文件。

為了支持多環(huán)境配置,可以通過文件命名的方式區(qū)分環(huán)境,比如:

  • application-dev.yml:開發(fā)環(huán)境配置
  • application-test.yml:測試環(huán)境配置
  • application-prod.yml:生產(chǎn)環(huán)境配置

各環(huán)境配置文件可以定義不同的參數(shù)。例如,以下是開發(fā)和生產(chǎn)環(huán)境的數(shù)據(jù)庫配置:

開發(fā)環(huán)境:application-dev.yml

server:
  port: 8081

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

生產(chǎn)環(huán)境:application-prod.yml

server:
  port: 8080

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

2. 動態(tài)切換環(huán)境

application.yml 中配置默認(rèn)激活的環(huán)境:

spring:
  profiles:
    active: dev

通過命令行參數(shù)啟動時動態(tài)指定環(huán)境:

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

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

在某些情況下,敏感的配置文件(如 application-prod.yml)可能包含生產(chǎn)環(huán)境的重要信息。

我們希望這些文件在打包時被排除,而不是直接包含在最終的 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>

創(chuàng)建 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>

執(zhí)行構(gòu)建命令:

mvn clean package

2. 使用 Gradle 排除配置文件

在 Gradle 的 build.gradle 文件中,可以通過 processResources 任務(wù)排除文件:

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

構(gòu)建時運(yùn)行:

./gradlew clean build

動態(tài)加載外部配置文件

為了進(jìn)一步提高安全性,我們可以將敏感配置文件存儲在外部,并通過動態(tài)加載的方式使用這些文件。

1. 存放外部配置文件

將敏感的配置文件(如 application-prod.yml)存放在服務(wù)器的安全路徑,例如 /etc/app-config/

2. 啟動時指定外部配置路徑

通過啟動參數(shù) --spring.config.location 指定外部配置文件的路徑:

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

3. 配置環(huán)境變量

將配置路徑指定為環(huán)境變量,啟動時自動加載:

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

總結(jié)

多環(huán)境配置:

  • 為不同的環(huán)境創(chuàng)建獨(dú)立的配置文件(application-dev.yml、application-prod.yml)。
  • 使用 spring.profiles.active 動態(tài)切換環(huán)境。

配置文件排除:

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

動態(tài)加載外部配置:

  • 將敏感文件存儲在外部路徑,通過啟動參數(shù)、環(huán)境變量或額外路徑加載。

推薦實踐:

  1. 敏感信息外部化:避免將敏感信息打包到 JAR 中。
  2. 版本控制:將環(huán)境無關(guān)的公共配置納入版本管理,但排除敏感文件。
  3. 環(huán)境隔離:通過 CI/CD 流程在不同環(huán)境中自動部署相應(yīng)的配置。

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringBoot bean依賴屬性配置詳細(xì)介紹

    SpringBoot bean依賴屬性配置詳細(xì)介紹

    Spring容器是Spring的核心,一切SpringBean都存儲在Spring容器內(nèi)。可以說bean是spring核心中的核心。Bean配置信息定義了Bean的實現(xiàn)及依賴關(guān)系,這篇文章主要介紹了SpringBoot bean依賴屬性配置
    2022-09-09
  • SpringBoot整合RedisTemplate實現(xiàn)緩存信息監(jiān)控的基本操作

    SpringBoot整合RedisTemplate實現(xiàn)緩存信息監(jiān)控的基本操作

    SpringBoot中的 redistemplate 是一個用于操作 Redis 數(shù)據(jù)庫的高級模板類,它提供了一組方法,可以方便地執(zhí)行常見的 Redis 操作,如存儲、檢索和刪除數(shù)據(jù),本文給大家介紹了SpringBoot整合RedisTemplate實現(xiàn)緩存信息監(jiān)控的基本操作,需要的朋友可以參考下
    2025-02-02
  • Java中常用數(shù)據(jù)類型的輸入輸出詳解

    Java中常用數(shù)據(jù)類型的輸入輸出詳解

    本文主要介紹了Java中幾個常用的數(shù)據(jù)類型是如何輸入和輸出的,例如:Char型、int型、double型、數(shù)組、字符串等,對我們學(xué)習(xí)java有一定的幫助,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)學(xué)習(xí)
    2021-12-12
  • Java實戰(zhàn)之超市收銀管理系統(tǒng)的實現(xiàn)

    Java實戰(zhàn)之超市收銀管理系統(tǒng)的實現(xiàn)

    這篇文章主要介紹了如何利用Java實現(xiàn)超市收銀管理系統(tǒng),文中采用的技術(shù)有:Spring、SpringMVC、MyBatis、ThymeLeaf等,需要的可以參考一下
    2022-03-03
  • Java數(shù)組的基本學(xué)習(xí)教程

    Java數(shù)組的基本學(xué)習(xí)教程

    這篇文章主要介紹了Java數(shù)組的基本學(xué)習(xí)教程,是Java入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-10-10
  • java?for循環(huán)內(nèi)執(zhí)行多線程問題

    java?for循環(huán)內(nèi)執(zhí)行多線程問題

    這篇文章主要介紹了java?for循環(huán)內(nèi)執(zhí)行多線程問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • mybatis的映射xml中動態(tài)設(shè)置orderby方式

    mybatis的映射xml中動態(tài)設(shè)置orderby方式

    這篇文章主要介紹了mybatis的映射xml中動態(tài)設(shè)置orderby方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Java如何用一個統(tǒng)一結(jié)構(gòu)接收成員名稱不固定的數(shù)據(jù)

    Java如何用一個統(tǒng)一結(jié)構(gòu)接收成員名稱不固定的數(shù)據(jù)

    這篇文章主要為大家詳細(xì)介紹了Java如何用一個統(tǒng)一結(jié)構(gòu)接收成員名稱不固定的數(shù)據(jù),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-11-11
  • SpringBoot整合Sa-Token實現(xiàn)?API?接口簽名安全校驗功能

    SpringBoot整合Sa-Token實現(xiàn)?API?接口簽名安全校驗功能

    這篇文章主要介紹了SpringBoot整合Sa-Token實現(xiàn)?API?接口簽名安全校驗功能,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-07-07
  • Java 在線考試云平臺的實現(xiàn)

    Java 在線考試云平臺的實現(xiàn)

    讀萬卷書不如行萬里路,只學(xué)書上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+vue+springboot+mysql+maven實現(xiàn)一個前端vue后臺java微服務(wù)的在線考試系統(tǒng),大家可以在過程中查缺補(bǔ)漏,提升水平
    2021-11-11

最新評論