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

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

 更新時(shí)間:2025年03月11日 10:53:02   作者:冰糖心書(shū)房  
`application.yml`和`bootstrap.yml`都是Spring Boot項(xiàng)目中的配置文件,但它們?cè)诩虞d時(shí)機(jī)、用途、優(yōu)先級(jí)、配置來(lái)源、適用場(chǎng)景和是否必須存在等方面存在區(qū)別

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

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

核心區(qū)別概覽:

特性bootstrap.yml / bootstrap.propertiesapplication.yml / application.properties
加載時(shí)機(jī)更早 (Bootstrap Context)較晚 (Application Context)
用途引導(dǎo)引導(dǎo) (Bootstrapping), 外部化配置應(yīng)用程序通用配置
上下文Bootstrap ContextApplication Context
優(yōu)先級(jí)更高 (在 Bootstrap Context 中)較低 (在 Application Context 中)
配置來(lái)源外部配置 (Config Server, Nacos, etc.)應(yīng)用自身配置 (本地文件, 命令行, 環(huán)境變量)
適用場(chǎng)景配置中心連接、共享配置、應(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. 加載時(shí)機(jī) (Loading Order)

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

理解 Bootstrap Context 和 Application Context:

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

  • 配置 Spring Cloud Config Client 或 Nacos Config Client 的連接信息: Bootstrap Context 需要先知道如何連接配置中心,才能加載外部化配置。
  • 加載共享配置: 在多個(gè)應(yīng)用之間共享的配置通常需要在 Bootstrap Context 中加載,以便在應(yīng)用啟動(dò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、處理請(qǐng)求、執(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 功能時(shí),需要在 bootstrap.yml 中配置。
  • 配置應(yīng)用程序名稱 (spring.application.name): 通常在 bootstrap.yml 中設(shè)置,用于標(biāo)識(shí)應(yīng)用,方便配置中心識(shí)別。
  • 激活 Profile (spring.profiles.active):bootstrap.yml 中激活 Profile,可以影響后續(xù)的配置加載。
  • 其他需要在應(yīng)用啟動(dòng)早期就加載的配置: 例如,一些自定義的 Bootstrap 監(jiān)聽(tīng)器或初始化器需要的配置。

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

  • 應(yīng)用程序自身的通用配置: 例如,端口號(hào)、數(shù)據(jù)源連接信息 (如果不是共享的)、日志級(jí)別、國(guó)際化配置、Thymeleaf 模板配置、Spring MVC 配置、Bean 的定義等。
  • 業(yè)務(wù)邏輯相關(guān)的配置: 例如,一些業(yè)務(wù)開(kāi)關(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 的配置會(huì)影響 Application Context 的創(chuàng)建和初始化。

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

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

5. 配置來(lái)源 (Configuration Sources)

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

6. 適用場(chǎng)景 (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 中的配置會(huì)覆蓋 bootstrap.yml相同屬性的配置。 這是因?yàn)?application.ymlbootstrap.yml 之后加載。

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

  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)用在沒(méi)有這些配置文件的情況下也可以啟動(dòng),它會(huì)使用默認(rèn)配置。
  • 然而,在實(shí)際開(kāi)發(fā)中,為了進(jìn)行各種自定義配置,application.yml (或 application.properties) 通常是必需存在的。 bootstrap.yml (或 bootstrap.properties) 則在需要使用 Spring Cloud Config 或 Nacos Config 等外部化配置管理時(shí)才常用。

總結(jié)

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

簡(jiǎn)單記憶口訣:

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

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

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

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

    mybatis的Configuration詳解

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

    eclipse導(dǎo)入工程報(bào)錯(cuò)問(wèn)題項(xiàng)目或者文件有紅叉的解決方案

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

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

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

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

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

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

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

最新評(píng)論

略阳县| 石棉县| 衡南县| 濮阳市| 珠海市| 响水县| 登封市| 盱眙县| 江华| 永胜县| 宜宾县| 莎车县| 扶沟县| 密云县| 定陶县| 安溪县| 称多县| 三明市| 普格县| 离岛区| 通河县| 凯里市| 琼结县| 浪卡子县| 湖南省| 卓资县| 黄浦区| 盐城市| 平阴县| 大荔县| 盐津县| 蕉岭县| 班戈县| 海原县| 竹北市| 黄大仙区| 凌云县| 临泽县| 华宁县| 芜湖市| 姜堰市|