最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot項目中application.yml和bootstrap.yml文件的區(qū)別及說明

 更新時間:2025年03月11日 10:53:02   作者:冰糖心書房  
`application.yml`和`bootstrap.yml`都是Spring Boot項目中的配置文件,但它們在加載時機、用途、優(yōu)先級、配置來源、適用場景和是否必須存在等方面存在區(qū)別

application.yml和bootstrap.yml文件的區(qū)別

application.ymlbootstrap.yml 文件都是 Spring Boot 項目中用于配置應(yīng)用程序的 YAML 或 Properties 文件,但它們在加載順序、用途和優(yōu)先級上存在關(guān)鍵的區(qū)別。

核心區(qū)別概覽:

特性bootstrap.yml / bootstrap.propertiesapplication.yml / application.properties
加載時機更早 (Bootstrap Context)較晚 (Application Context)
用途引導(dǎo)引導(dǎo) (Bootstrapping), 外部化配置應(yīng)用程序通用配置
上下文Bootstrap ContextApplication Context
優(yōu)先級更高 (在 Bootstrap Context 中)較低 (在 Application Context 中)
配置來源外部配置 (Config Server, Nacos, etc.)應(yīng)用自身配置 (本地文件, 命令行, 環(huán)境變量)
適用場景配置中心連接、共享配置、應(yīng)用名、Profile應(yīng)用通用配置、Bean 定義、業(yè)務(wù)邏輯配置
配置覆蓋application.yml 覆蓋 bootstrap.yml命令行參數(shù)、環(huán)境變量等覆蓋 application.yml
默認(rèn)位置src/main/resources/src/main/resources/
是否必須存在可選可選 (但通常存在)

詳細(xì)解釋和區(qū)別:

1. 加載時機 (Loading Order)

  • bootstrap.yml / bootstrap.properties (Bootstrap Context): 在 Spring Boot 應(yīng)用程序啟動的非常早期階段加載。 這是通過 Bootstrap Context 實現(xiàn)的,它是一個特殊的父級 Spring 上下文,在主 Application Context 之前創(chuàng)建。
  • application.yml / application.properties (Application Context):bootstrap.yml 加載之后,在 Application Context 初始化時加載。 這是 Spring Boot 應(yīng)用的主上下文。

理解 Bootstrap Context 和 Application Context:

你可以將 Bootstrap Context 理解為 Spring Boot 啟動的引導(dǎo)階段,它負(fù)責(zé)初始化一些基礎(chǔ)且關(guān)鍵的配置,例如:

  • 配置 Spring Cloud Config Client 或 Nacos Config Client 的連接信息: Bootstrap Context 需要先知道如何連接配置中心,才能加載外部化配置。
  • 加載共享配置: 在多個應(yīng)用之間共享的配置通常需要在 Bootstrap Context 中加載,以便在應(yīng)用啟動的早期階段就可用。
  • 設(shè)置 spring.application.namespring.profiles.active 等基礎(chǔ)屬性: 這些屬性通常需要在 Bootstrap Context 中確定,以便后續(xù)的配置加載和應(yīng)用初始化能夠正確進(jìn)行。

Application Context 則是 Spring Boot 應(yīng)用的主應(yīng)用上下文,負(fù)責(zé)加載和管理應(yīng)用程序中的所有 Bean、處理請求、執(zhí)行業(yè)務(wù)邏輯等。 application.yml 主要用于配置應(yīng)用程序自身的通用設(shè)置。

2. 用途 (Purpose)

bootstrap.yml / bootstrap.properties: 引導(dǎo)引導(dǎo) (Bootstrapping) 和 外部化配置:

  • 配置 Spring Cloud Config Client 或 Nacos Config Client: 例如 spring.cloud.config.urispring.cloud.nacos.config.server-addr 等配置。
  • 加載共享配置 (sharedConfigs): 使用 Spring Cloud Alibaba Nacos Config 的 sharedConfigs 功能時,需要在 bootstrap.yml 中配置。
  • 配置應(yīng)用程序名稱 (spring.application.name): 通常在 bootstrap.yml 中設(shè)置,用于標(biāo)識應(yīng)用,方便配置中心識別。
  • 激活 Profile (spring.profiles.active):bootstrap.yml 中激活 Profile,可以影響后續(xù)的配置加載。
  • 其他需要在應(yīng)用啟動早期就加載的配置: 例如,一些自定義的 Bootstrap 監(jiān)聽器或初始化器需要的配置。

application.yml / application.properties: 應(yīng)用程序通用配置:

  • 應(yīng)用程序自身的通用配置: 例如,端口號、數(shù)據(jù)源連接信息 (如果不是共享的)、日志級別、國際化配置、Thymeleaf 模板配置、Spring MVC 配置、Bean 的定義等。
  • 業(yè)務(wù)邏輯相關(guān)的配置: 例如,一些業(yè)務(wù)開關(guān)、參數(shù)配置等。
  • 大部分應(yīng)用程序的配置都應(yīng)該放在 application.yml 中。

3. 上下文 (Context)

  • bootstrap.yml / bootstrap.properties: Bootstrap Context
  • application.yml / application.properties: Application Context

這意味著 bootstrap.yml 中的配置主要作用于 Bootstrap Context,而 application.yml 中的配置作用于 Application Context。 Bootstrap Context 的配置會影響 Application Context 的創(chuàng)建和初始化。

4. 優(yōu)先級 (Priority)

  • bootstrap.yml / bootstrap.properties 的優(yōu)先級更高 (在 Bootstrap Context 中): Bootstrap Context 的配置會優(yōu)先加載,并影響 Application Context 的創(chuàng)建。
  • application.yml / application.properties 的優(yōu)先級較低 (在 Application Context 中): Application Context 的配置在 Bootstrap Context 之后加載。

5. 配置來源 (Configuration Sources)

  • bootstrap.yml / bootstrap.properties: 傾向于配置外部配置來源**,例如 Spring Cloud Config Server, Nacos Config Server 等。 也用于配置一些需要在引導(dǎo)階段就確定的基礎(chǔ)屬性。
  • application.yml / application.properties: 主要用于配置應(yīng)用自身**的配置,通常來源于本地文件系統(tǒng)、命令行參數(shù)、環(huán)境變量等。

6. 適用場景 (Use Cases)

bootstrap.yml / bootstrap.properties: 適用于:

  • 配置 Spring Cloud Config 或 Nacos Config Client 連接信息。
  • 配置 sharedConfigs (Nacos Config)。
  • 設(shè)置 spring.application.namespring.profiles.active。
  • 配置需要在 Bootstrap Context 中使用的屬性。

application.yml / application.properties: 適用于:

  • 配置應(yīng)用程序的通用設(shè)置。
  • 定義 Bean。
  • 配置業(yè)務(wù)邏輯相關(guān)的參數(shù)。
  • 大部分應(yīng)用程序的配置。

7. 配置覆蓋 (Configuration Overriding)

application.yml 中的配置會覆蓋 bootstrap.yml相同屬性的配置。 這是因為 application.ymlbootstrap.yml 之后加載。

命令行參數(shù)、環(huán)境變量等 可以進(jìn)一步覆蓋 application.ymlbootstrap.yml 中的配置。 Spring Boot 的配置優(yōu)先級順序是:

  1. 命令行參數(shù)
  2. 環(huán)境變量
  3. application.yml / application.properties (profile-specific 和 default)
  4. bootstrap.yml / bootstrap.properties (profile-specific 和 default)
  5. 默認(rèn)配置 (Spring Boot 框架內(nèi)部的默認(rèn)值)

8. 默認(rèn)位置 (Default Location)

  • application.ymlbootstrap.yml 的默認(rèn)位置都是 src/main/resources/ 目錄下。

9. 是否必須存在 (Required or Optional)

  • application.ymlbootstrap.yml 都不是必須存在的。 Spring Boot 應(yīng)用在沒有這些配置文件的情況下也可以啟動,它會使用默認(rèn)配置。
  • 然而,在實際開發(fā)中,為了進(jìn)行各種自定義配置,application.yml (或 application.properties) 通常是必需存在的。 bootstrap.yml (或 bootstrap.properties) 則在需要使用 Spring Cloud Config 或 Nacos Config 等外部化配置管理時才常用。

總結(jié)

  • 如果你不需要使用 Spring Cloud Config 或 Nacos Config 等外部化配置管理,那么你可能只需要 application.yml (或 application.properties) 文件。 大部分應(yīng)用程序的配置都放在 application.yml 中即可。
  • 如果你需要使用 Spring Cloud Config 或 Nacos Config 等外部化配置管理,或者需要在應(yīng)用啟動的早期階段加載一些關(guān)鍵配置 (例如共享配置、應(yīng)用名、Profile 等),那么你就需要使用 bootstrap.yml (或 bootstrap.properties) 文件。 bootstrap.yml 主要用于配置引導(dǎo)階段的配置,以及外部化配置的連接信息和共享配置。

簡單記憶口訣:

  • Bootstrap 先行,Application 后續(xù): bootstrap.yml 先加載,application.yml 后加載。
  • Bootstrap 引導(dǎo),Application 應(yīng)用: bootstrap.yml 負(fù)責(zé)引導(dǎo)啟動,application.yml 負(fù)責(zé)應(yīng)用配置。
  • Bootstrap 外部,Application 自身: bootstrap.yml 配置外部配置,application.yml 配置自身應(yīng)用。

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

相關(guān)文章

  • Java基于IO流讀取文件的方法

    Java基于IO流讀取文件的方法

    這篇文章主要介紹了Java基于IO流讀取文件的方法,涉及Java文件流操作的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-10-10
  • Idea2022版本配置SpringBoot熱部署的教程

    Idea2022版本配置SpringBoot熱部署的教程

    這篇文章主要介紹了Idea2022版本配置SpringBoot熱部署的教程,包括添加依賴及更改IDEA設(shè)置的方法,本文圖文實例相結(jié)合給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-04-04
  • Java 關(guān)于String字符串原理上的問題

    Java 關(guān)于String字符串原理上的問題

    字符串廣泛應(yīng)用 在 Java 編程中,在 Java 中字符串屬于對象,Java 提供了 String 類來創(chuàng)建和操作字符串,讓我們一起來了解它
    2022-04-04
  • Java中五種不同方法的創(chuàng)建對象

    Java中五種不同方法的創(chuàng)建對象

    本文為大家詳細(xì)介紹了在Java中5種不同創(chuàng)建對象的方法和實例代碼,感興趣的小伙伴們可以參考一下
    2016-07-07
  • SpringBoot集成Curator實現(xiàn)Zookeeper基本操作的代碼示例

    SpringBoot集成Curator實現(xiàn)Zookeeper基本操作的代碼示例

    Zookeeper是一個Apache開源的分布式的應(yīng)用,為系統(tǒng)架構(gòu)提供協(xié)調(diào)服務(wù),ZooKeeper的目標(biāo)就是封裝好復(fù)雜易出錯的關(guān)鍵服務(wù),將簡單易用的接口和性能高效、功能穩(wěn)定的系統(tǒng)提供給用戶,本文給大家介紹了SpringBoot集成Curator實現(xiàn)Zookeeper基本操作,需要的朋友可以參考下
    2024-05-05
  • mybatis的Configuration詳解

    mybatis的Configuration詳解

    這篇文章主要介紹了mybatis的Configuration詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • eclipse導(dǎo)入工程報錯問題項目或者文件有紅叉的解決方案

    eclipse導(dǎo)入工程報錯問題項目或者文件有紅叉的解決方案

    這篇文章主要介紹了eclipse導(dǎo)入工程報錯問題項目或者文件有紅叉的解決方案,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05
  • Java 數(shù)據(jù)庫時間返回前端顯示錯誤(差8個小時)的解決方法

    Java 數(shù)據(jù)庫時間返回前端顯示錯誤(差8個小時)的解決方法

    本文主要介紹了Java 數(shù)據(jù)庫時間返回前端顯示錯誤(差8個小時)的解決方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-08-08
  • Java實現(xiàn)在線聊天室(層層遞進(jìn))

    Java實現(xiàn)在線聊天室(層層遞進(jìn))

    這篇文章主要為大家詳細(xì)介紹了Java實現(xiàn)在線聊天室,層層遞進(jìn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-09-09
  • Java實現(xiàn)Floyd算法的示例代碼

    Java實現(xiàn)Floyd算法的示例代碼

    Floyd算法又稱為插點法,是一種利用動態(tài)規(guī)劃的思想尋找給定的加權(quán)圖中多源點之間最短路徑的算法。本文將用Java語言實現(xiàn)Floyd算法,需要的可以參考一下
    2022-07-07

最新評論

沈丘县| 平乐县| 岳池县| 四川省| 洛南县| 凤山县| 清河县| 平陆县| 新蔡县| 德州市| 巴彦淖尔市| 句容市| 资阳市| 葵青区| 娱乐| 拜泉县| 泌阳县| 武乡县| 杭州市| 澎湖县| 蒲城县| 酒泉市| 黑水县| 乐清市| 祁连县| 射洪县| 蓬溪县| 沙河市| 肥城市| 灵璧县| 昌黎县| 福贡县| 休宁县| 元江| 祁连县| 伊春市| 盐亭县| 新泰市| 卢氏县| 新巴尔虎左旗| 吉木萨尔县|