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

SpringBoot多環(huán)境打包與配置文件排除實(shí)踐記錄

 更新時(shí)間:2024年11月27日 11:37:54   作者:https://blog.csdn.net/yangshangwei/article/details/143924118  
本文介紹了SpringBoot項(xiàng)目多環(huán)境打包與配置文件排除實(shí)踐,包括多環(huán)境配置的實(shí)現(xiàn)方法、打包時(shí)排除配置文件的方法以及動(dòng)態(tài)加載外部配置文件的最佳實(shí)踐,感興趣的朋友跟隨小編一起看看吧

推薦閱讀:

SpringBoot 多環(huán)境打包最佳實(shí)踐記錄

Spring Boot 項(xiàng)目多環(huán)境打包與配置文件排除實(shí)踐

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

多環(huán)境配置的實(shí)現(xiàn)方法打包時(shí)排除配置文件的方法動(dòng)態(tài)加載外部配置文件的最佳實(shí)踐

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

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

Spring Boot 默認(rèn)加載 application.propertiesapplication.yml 配置文件。為了支持多環(huán)境配置,可以通過(guò)文件命名的方式區(qū)分環(huán)境,比如:

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

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

開(kāi)發(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. 動(dòng)態(tài)切換環(huán)境

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

spring:
  profiles:
    active: dev

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

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

二、打包時(shí)排除配置文件的方法

在某些情況下,敏感的配置文件(如 application-prod.yml)可能包含生產(chǎn)環(huán)境的重要信息。我們希望這些文件在打包時(shí)被排除,而不是直接包含在最終的 JAR 包中。

1. 使用 Maven 排除配置文件

方法 1:通過(guò) maven-resources-plugin

在 Maven 的 pom.xml 中,通過(guò) maven-resources-plugin 在資源打包階段排除文件:

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

方法 2:通過(guò) 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 文件中,可以通過(guò) processResources 任務(wù)排除文件:

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

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

./gradlew clean build

三、動(dòng)態(tài)加載外部配置文件

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

1. 存放外部配置文件

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

2. 啟動(dòng)時(shí)指定外部配置路徑

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

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

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

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

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 動(dòng)態(tài)切換環(huán)境。

配置文件排除

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

動(dòng)態(tài)加載外部配置

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

推薦實(shí)踐

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

到此這篇關(guān)于SpringBoot - 多環(huán)境打包與配置文件排除實(shí)踐的文章就介紹到這了,更多相關(guān)SpringBoot 多環(huán)境打包內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解java Collections.sort的兩種用法

    詳解java Collections.sort的兩種用法

    這篇文章主要介紹了詳解java Collections.sort的兩種用法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • java遞歸法求字符串逆序

    java遞歸法求字符串逆序

    這篇文章主要介紹了java遞歸法求字符串逆序,涉及java遞歸調(diào)用的相關(guān)操作技巧,需要的朋友可以參考下
    2015-05-05
  • Java注解Annotation與自定義注解詳解

    Java注解Annotation與自定義注解詳解

    本文全面講述了Java注解Annotation與Java自定義注解及相關(guān)內(nèi)容,大家可以認(rèn)真看看
    2018-03-03
  • SpringBoot系列教程之防重放與操作冪等

    SpringBoot系列教程之防重放與操作冪等

    同一條數(shù)據(jù)被用戶(hù)點(diǎn)擊了多次,導(dǎo)致數(shù)據(jù)冗余,需要防止弱網(wǎng)絡(luò)等環(huán)境下的重復(fù)點(diǎn)擊,下面這篇文章主要給大家介紹了關(guān)于SpringBoot系列教程之防重放與操作冪等的相關(guān)資料,需要的朋友可以參考下
    2022-04-04
  • maven工程中讀取resources中的資源文件

    maven工程中讀取resources中的資源文件

    Web項(xiàng)目中應(yīng)該經(jīng)常有這樣的需求,在maven項(xiàng)目的resources目錄下放一些文件,比如一些配置文件,資源文件等,本文主要介紹了maven工程中讀取resources中的資源文件,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-12-12
  • SpringBoot之自定義啟動(dòng)異常堆棧信息打印方式

    SpringBoot之自定義啟動(dòng)異常堆棧信息打印方式

    這篇文章主要介紹了SpringBoot之自定義啟動(dòng)異常堆棧信息打印方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Java中SynchronousQueue的底層實(shí)現(xiàn)原理剖析

    Java中SynchronousQueue的底層實(shí)現(xiàn)原理剖析

    BlockingQueue的實(shí)現(xiàn)類(lèi)中,有一種阻塞隊(duì)列比較特殊,就是SynchronousQueue(同步移交隊(duì)列),隊(duì)列長(zhǎng)度為0。本文就來(lái)剖析一下SynchronousQueue的底層實(shí)現(xiàn)原理,感興趣的可以了解一下
    2022-11-11
  • Java HttpClient用法的示例詳解

    Java HttpClient用法的示例詳解

    Java開(kāi)發(fā)語(yǔ)言中實(shí)現(xiàn)HTTP請(qǐng)求的方法主要有兩種:一種是JAVA的標(biāo)準(zhǔn)類(lèi)HttpUrlConnection;另一種是第三方開(kāi)源框架HTTPClient。本文就將詳細(xì)講講Java中HttpClient的使用,需要的可以參考一下
    2022-07-07
  • 詳解Java的TCP/IP編程學(xué)習(xí)--基于定界符的成幀

    詳解Java的TCP/IP編程學(xué)習(xí)--基于定界符的成幀

    這篇文章主要介紹了Java的TCP/IP編程學(xué)習(xí)--基于定界符的成幀,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • iOS多線程介紹

    iOS多線程介紹

    這篇文章主要介紹了iOS多線程的相關(guān)知識(shí),涉及到對(duì)進(jìn)程,線程等方面的知識(shí)講解,本文非常具有參考價(jià)值,感興趣的朋友一起學(xué)習(xí)吧
    2016-05-05

最新評(píng)論