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

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

 更新時(shí)間:2025年03月11日 10:53:02   作者:冰糖心書房  
`application.yml`和`bootstrap.yml`都是Spring Boot項(xiàng)目中的配置文件,但它們?cè)诩虞d時(shí)機(jī)、用途、優(yōu)先級(jí)、配置來源、適用場(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 中)
配置來源外部配置 (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)的非常早期階段加載。 這是通過 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)聽器或初始化器需要的配置。

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

  • 應(yīng)用程序自身的通用配置: 例如,端口號(hào)、數(shù)據(jù)源連接信息 (如果不是共享的)、日志級(jí)別、國(guó)際化配置、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 的配置會(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. 配置來源 (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. 適用場(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)用在沒有這些配置文件的情況下也可以啟動(dòng),它會(huì)使用默認(rèn)配置。
  • 然而,在實(shí)際開發(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)文章

  • spring定義和裝配bean詳解

    spring定義和裝配bean詳解

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

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

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

    SpringBoot2入門自動(dòng)配置原理及源碼分析

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

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

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

    Java中PrintWriter使用方法介紹

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

    Java中幾個(gè)Reference常見的作用詳解

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

    從dubbo zookeeper注冊(cè)地址提取出zookeeper地址的方法

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

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

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

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

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

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

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

最新評(píng)論