亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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)用初始化能夠正確進行。

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)境變量等 可以進一步覆蓋 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ā)中,為了進行各種自定義配置,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)文章

  • spring定義和裝配bean詳解

    spring定義和裝配bean詳解

    這篇文章主要介紹了spring定義和裝配bean詳解,具有一定參考價值,需要的朋友可以了解下。
    2017-12-12
  • JAVAWEB實現(xiàn)簡單的商城項目(一)實例代碼解析

    JAVAWEB實現(xiàn)簡單的商城項目(一)實例代碼解析

    本文給大家分享一段實例代碼給大家介紹JAVAWEB實現(xiàn)簡單的商城項目(一),非常具有參考價值,感興趣的朋友一起學(xué)習(xí)吧
    2016-02-02
  • SpringBoot2入門自動配置原理及源碼分析

    SpringBoot2入門自動配置原理及源碼分析

    這篇文章主要為大家介紹了SpringBoot2入門自動配置原理及源碼分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-05-05
  • 詳解解密Java中的類型轉(zhuǎn)換問題

    詳解解密Java中的類型轉(zhuǎn)換問題

    這篇文章主要介紹了Java中的類型轉(zhuǎn)換問題,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • Java中PrintWriter使用方法介紹

    Java中PrintWriter使用方法介紹

    這篇文章主要介紹了Java中PrintWriter使用方法介紹,文章圍繞主題展開PrintWriter使用方法的詳細(xì)介紹,具有一定的參考價值,感興趣的小伙伴可以參考一下
    2022-06-06
  • Java中幾個Reference常見的作用詳解

    Java中幾個Reference常見的作用詳解

    這篇文章主要給大家介紹了Java中關(guān)于Reference多個作用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下面跟著小編一起來學(xué)習(xí)學(xué)習(xí)吧。
    2017-06-06
  • 從dubbo zookeeper注冊地址提取出zookeeper地址的方法

    從dubbo zookeeper注冊地址提取出zookeeper地址的方法

    今天小編就為大家分享一篇關(guān)于從dubbo zookeeper注冊地址提取出zookeeper地址的方法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • 詳解java整合solr5.0之solrj的使用

    詳解java整合solr5.0之solrj的使用

    本篇文章主要介紹了詳解java整合solr5.0之solrj的使用 ,具有一定的參考價值,有興趣的可以了解下
    2017-06-06
  • 一文搞懂Java創(chuàng)建線程的五種方法

    一文搞懂Java創(chuàng)建線程的五種方法

    本文主要為大家詳細(xì)介紹一下Java實現(xiàn)線程創(chuàng)建的五種常見方式,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)有一定的幫助,感興趣的可以跟隨小編學(xué)習(xí)一下
    2022-06-06
  • Java中包裝類和Arrays類的詳細(xì)介紹

    Java中包裝類和Arrays類的詳細(xì)介紹

    Arrays針對于數(shù)組做操作的類,該類包含用于操作數(shù)組的各種方法(如排序和搜索),這篇文章主要給大家介紹了關(guān)于Java中包裝類和Arrays類的詳細(xì)介紹,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-12-12

最新評論