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

application.yaml與bootstrap.yaml的使用

 更新時(shí)間:2024年08月23日 10:16:35   作者:Surfing鯊魚  
這篇文章主要介紹了application.yaml與bootstrap.yaml的使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

application.yaml與bootstrap.yaml

你對(duì)這兩個(gè)文件有沒(méi)有清晰認(rèn)識(shí)?

application.yaml

  • 用途:主要用于應(yīng)用程序的主要配置,包括數(shù)據(jù)庫(kù)連接信息、端口號(hào)、日志級(jí)別、自定義屬性等應(yīng)用級(jí)別的設(shè)置。這是Spring Boot應(yīng)用中最常見(jiàn)的配置文件,幾乎所有自定義配置都會(huì)放在這里。
  • 加載時(shí)機(jī)application.yaml 在Spring應(yīng)用上下文初始化之后被加載,這意味著大部分Bean的創(chuàng)建和自動(dòng)配置都會(huì)考慮到這里的配置信息。
  • 覆蓋:可以通過(guò)命令行參數(shù)、環(huán)境變量、Java系統(tǒng)屬性等方式覆蓋application.yaml中的配置。

bootstrap.yaml

  • 用途:主要用于應(yīng)用程序的引導(dǎo)階段配置,特別是與Spring Cloud相關(guān)的配置,如配置中心(Config Server)的地址。它的內(nèi)容在應(yīng)用程序的上下文初始化之前被加載,適合配置那些需要在Spring應(yīng)用上下文啟動(dòng)之前就需要讀取的屬性,比如用來(lái)配置從何處加載主配置文件的地址。
  • 加載時(shí)機(jī)bootstrap.yaml 文件比application.yaml更早加載,它在應(yīng)用程序的引導(dǎo)階段就被處理,用于應(yīng)用程序上下文初始化之前的配置,比如配置中心的配置。
  • 用途示例:當(dāng)使用Spring Cloud Config Server來(lái)集中管理配置時(shí),你需要在bootstrap.yaml中配置Config Server的地址,這樣Spring Cloud會(huì)先從Config Server獲取配置信息,再初始化Spring Boot應(yīng)用。

這兩大段在講什么 不能簡(jiǎn)單講一下嗎?

知識(shí)儲(chǔ)備

  • Bean:實(shí)現(xiàn)控制反轉(zhuǎn)的一個(gè)java對(duì)象 加入到ioc容器當(dāng)中
  • Spring上下文:Bean管理 資源訪問(wèn) 消息傳遞 生命周期管理 我就簡(jiǎn)單講一下第一個(gè)【第一個(gè)最好講】 Bean管理 : ApplicationContext 讀取配置元數(shù)據(jù)(xml文件 java配置 注解 )根據(jù)這些數(shù)據(jù)創(chuàng)建Bean 實(shí)現(xiàn)控制反轉(zhuǎn)

Spring上下文啟動(dòng):加載配置 -》 bean讀取 -》 bean的實(shí)例化 -》 bean的初始化 -》 啟動(dòng)后監(jiān)聽(tīng)

容器初始化階段(加載配置階段) springboot 會(huì)讀取 application.yaml 文件

bootstrap.yaml 文件在加載配置階段前 就已經(jīng)讀取了

bootstrap.yaml 更早加載,主要用于引導(dǎo)配置,影響整個(gè)應(yīng)用的初始化;而 application.yaml 加載較晚,負(fù)責(zé)應(yīng)用的主體配置,靈活性和可覆蓋性更高。

我們來(lái)舉例

bootstrap配置文件在Spring Boot應(yīng)用的啟動(dòng)過(guò)程中比application配置文件具有更高的優(yōu)先級(jí)。

這意味著在應(yīng)用初始化的最早階段,Spring會(huì)先讀取bootstrap文件中的配置。

由于Nacos作為配置中心,負(fù)責(zé)提供應(yīng)用運(yùn)行時(shí)所需的配置信息,將其地址放在bootstrap中可以確保應(yīng)用在加載其他任何配置或初始化Bean之前就能建立起與Nacos的連接,從而能夠及時(shí)獲取到所有必需的配置。

server:
  port: 3000 # 前端默認(rèn)訪問(wèn)端口號(hào)為3000
  servlet:
    context-path: / # 前端默認(rèn)訪問(wèn)的根路徑
spring:
  application:
    name: gateway-service  # 程序名就是服務(wù)名
  cloud:
    nacos:      
        server-addr: 174.148.4.170:8848 #注冊(cè)中心

當(dāng)然還有其他原因:

  • 功能隔離bootstrap配置主要用于應(yīng)用程序的引導(dǎo)階段,它配置的內(nèi)容是用來(lái)引導(dǎo)Spring Boot應(yīng)用上下文的創(chuàng)建,比如配置中心的地址、安全證書、加密解密的密鑰等基礎(chǔ)設(shè)施級(jí)別的設(shè)置。而application配置則是關(guān)于應(yīng)用本身的業(yè)務(wù)邏輯和特性配置。將Nacos地址這樣的基礎(chǔ)設(shè)施配置與業(yè)務(wù)邏輯配置分離開(kāi)來(lái),有助于清晰地組織配置,同時(shí)也便于管理和維護(hù)。
  • 安全性與穩(wěn)定性:將與配置中心通信的敏感信息和基礎(chǔ)配置放在bootstrap中,可以減少這些關(guān)鍵信息被不當(dāng)覆蓋的風(fēng)險(xiǎn),因?yàn)?code>bootstrap的配置不容易被外部環(huán)境變量或其他配置源所覆蓋。這對(duì)于生產(chǎn)環(huán)境尤其重要,保證了系統(tǒng)的穩(wěn)定性和安全性。
  • 避免循環(huán)依賴:如果Nacos配置包含了應(yīng)用運(yùn)行所必需的參數(shù)(比如數(shù)據(jù)庫(kù)連接字符串),而這些參數(shù)又存儲(chǔ)在Nacos中,那么必須在應(yīng)用啟動(dòng)時(shí)就正確設(shè)置Nacos的地址以獲取這些參數(shù),避免因配置加載順序?qū)е碌臐撛谘h(huán)依賴問(wèn)題

在來(lái)看一下3: 想象一下,你的Spring Boot應(yīng)用需要從Nacos獲取數(shù)據(jù)庫(kù)連接字符串等關(guān)鍵配置來(lái)初始化數(shù)據(jù)庫(kù)訪問(wèn)組件(如DataSource)。然而,這些數(shù)據(jù)庫(kù)連接信息實(shí)際上是存儲(chǔ)在Nacos中的。

這就形成了一個(gè)邏輯上的依賴鏈:應(yīng)用啟動(dòng) -> 連接Nacos -> 獲取數(shù)據(jù)庫(kù)配置 -> 初始化數(shù)據(jù)庫(kù)連接。如果Nacos的地址或者連接Nacos所需的其他關(guān)鍵參數(shù)(如認(rèn)證信息)也打算通過(guò)Nacos來(lái)管理,那么就會(huì)出現(xiàn)問(wèn)題,因?yàn)檫@時(shí)應(yīng)用在沒(méi)有Nacos配置的情況下無(wú)法知道如何連接到Nacos以獲取這些配置信息,形成了一種“雞生蛋,蛋生雞”的困境,即循環(huán)依賴。

總結(jié)

看到這你應(yīng)該清楚了 哪些應(yīng)該寫在bootstrap.yaml 哪些應(yīng)該寫在application.yaml 里面

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

相關(guān)文章

  • IntelliJ IDEA cmd和idea Terminal查看java版本不一致的解決方案

    IntelliJ IDEA cmd和idea Terminal查看java版本不一致的解決

    原來(lái)win10電腦上安裝的是jdk8的版本,因某些原因,現(xiàn)在想換成jdk7的版本,修改環(huán)境變量后,在cmd中執(zhí)行 [java -version]命令,顯示的是7的版本,遇到這樣的問(wèn)題如何解決呢?下面小編給大家分享IntelliJ IDEA cmd和idea Terminal查看java版本不一致的解決方案,一起看看吧
    2023-09-09
  • Java數(shù)組的定義、初始化、及二維數(shù)組用法分析

    Java數(shù)組的定義、初始化、及二維數(shù)組用法分析

    這篇文章主要介紹了Java數(shù)組的定義、初始化、及二維數(shù)組用法,結(jié)合具體實(shí)例形式分析了java數(shù)組概念、功能、數(shù)組定義、靜態(tài)數(shù)組、動(dòng)態(tài)數(shù)組、二維數(shù)組等相關(guān)使用技巧,需要的朋友可以參考下
    2019-01-01
  • SpringBoot結(jié)合ProGuard實(shí)現(xiàn)代碼混淆(最新版)

    SpringBoot結(jié)合ProGuard實(shí)現(xiàn)代碼混淆(最新版)

    這篇文章主要介紹了SpringBoot結(jié)合ProGuard實(shí)現(xiàn)代碼混淆(最新版),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • 教你創(chuàng)建springcloud微服務(wù)的基礎(chǔ)子服務(wù)的超詳細(xì)過(guò)程

    教你創(chuàng)建springcloud微服務(wù)的基礎(chǔ)子服務(wù)的超詳細(xì)過(guò)程

    這篇文章主要介紹了創(chuàng)建springcloud微服務(wù)的基礎(chǔ)子服務(wù),主要是創(chuàng)建兩個(gè)springboot服務(wù),在教程中增加springcloud相關(guān)組件,本文分步驟給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-04-04
  • 深入解析JVM之內(nèi)存結(jié)構(gòu)及字符串常量池(推薦)

    深入解析JVM之內(nèi)存結(jié)構(gòu)及字符串常量池(推薦)

    Java作為一種平臺(tái)無(wú)關(guān)性的語(yǔ)言,其主要依靠于Java虛擬機(jī)——JVM,接下來(lái)通過(guò)本文給大家介紹JVM之內(nèi)存結(jié)構(gòu)及字符串常量池的相關(guān)知識(shí),需要的朋友可以參考下
    2020-07-07
  • SpringBoot訪問(wèn)windows共享文件的方法

    SpringBoot訪問(wèn)windows共享文件的方法

    這篇文章主要介紹了SpringBoot訪問(wèn)windows共享文件,項(xiàng)目使用minio存儲(chǔ)且不在同一臺(tái)服務(wù)器上,為了優(yōu)化速度決定使用windows共享功能進(jìn)行文件傳輸,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-02-02
  • Java線程實(shí)現(xiàn)的三種方式詳細(xì)解析

    Java線程實(shí)現(xiàn)的三種方式詳細(xì)解析

    這篇文章主要介紹了Java線程實(shí)現(xiàn)的三種方式詳細(xì)解析,Java多線程實(shí)現(xiàn)方式主要有三種,繼承Thread類、實(shí)現(xiàn)Runnable接口、使用ExecutorService、Callable、Future實(shí)現(xiàn)有返回結(jié)果的多線程,需要的朋友可以參考下
    2023-12-12
  • 詳解Java springboot 整合Shiro框架

    詳解Java springboot 整合Shiro框架

    這篇文章主要為大家介紹了Java springboot 整合Shiro框架,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-01-01
  • Java線程池中的Future實(shí)現(xiàn)詳解

    Java線程池中的Future實(shí)現(xiàn)詳解

    這篇文章主要介紹了Java線程池中的Future實(shí)現(xiàn)詳解, FutureTask是一個(gè)任務(wù),FutureTask繼承了Runnable、Callable, 通過(guò)FutureTask可以獲取到任務(wù)執(zhí)行的狀態(tài),任務(wù)執(zhí)行完成完成后,將結(jié)構(gòu)通過(guò)Future接口返回,調(diào)用者可以調(diào)用Future#get()方法獲取到數(shù)據(jù),需要的朋友可以參考下
    2023-10-10
  • Java中replace的用法實(shí)例講解

    Java中replace的用法實(shí)例講解

    這篇文章主要給大家介紹了關(guān)于Java中replace用法的相關(guān)資料,Java中的replace方法是用于字符串替換的方法,它可以接受兩個(gè)參數(shù),第一個(gè)參數(shù)是需要被替換的字符串,第二個(gè)參數(shù)是替換后的字符串,需要的朋友可以參考下
    2024-04-04

最新評(píng)論