Spring Cloud教程 (二)應(yīng)用程序上下文服務(wù)層次結(jié)構(gòu)

Spring Boot對(duì)于如何使用Spring構(gòu)建應(yīng)用程序有一個(gè)看法:例如它具有常規(guī)配置文件的常規(guī)位置,以及用于常見管理和監(jiān)視任務(wù)的端點(diǎn)。Spring Cloud建立在此之上,并添加了一些可能系統(tǒng)中所有組件將使用或偶爾需要的功能骆撇。

引導(dǎo)應(yīng)用程序上下文

一個(gè)Spring Cloud應(yīng)用程序通過(guò)創(chuàng)建一個(gè)“引導(dǎo)”上下文來(lái)進(jìn)行操作,這個(gè)上下文是主應(yīng)用程序的父上下文。開箱即用拱燃,負(fù)責(zé)從外部源加載配置屬性,還解密本地外部配置文件中的屬性力惯。這兩個(gè)上下文共享一個(gè)Environment碗誉,這是任何Spring應(yīng)用程序的外部屬性的來(lái)源。Bootstrap屬性的優(yōu)先級(jí)高父晶,因此默認(rèn)情況下不能被本地配置覆蓋哮缺。

引導(dǎo)上下文使用與主應(yīng)用程序上下文不同的外部配置約定,因此使用bootstrap.ymlapplication.yml(或.properties)代替引導(dǎo)和主上下文的外部配置甲喝。例:

bootstrap.yml

spring:

? application:

? ? name: foo

? cloud:

? ? config:

? ? ? uri: ${SPRING_CONFIG_URI:http://localhost:8888}

如果您的應(yīng)用程序需要服務(wù)器上的特定于應(yīng)用程序的配置尝苇,那么設(shè)置spring.application.name(在bootstrap.yml或application.yml)中是個(gè)好主意。

您可以通過(guò)設(shè)置spring.cloud.bootstrap.enabled=false(例如在系統(tǒng)屬性中)來(lái)完全禁用引導(dǎo)過(guò)程。

應(yīng)用程序上下文層次結(jié)構(gòu)

如果您從SpringApplication或SpringApplicationBuilder構(gòu)建應(yīng)用程序上下文茎匠,則將Bootstrap上下文添加為該上下文的父級(jí)格仲。這是一個(gè)Spring的功能,即子上下文從其父進(jìn)程繼承屬性源和配置文件诵冒,因此與不使用Spring Cloud Config構(gòu)建相同上下文相比凯肋,“主”應(yīng)用程序上下文將包含其他屬性源。額外的財(cái)產(chǎn)來(lái)源是:

“bootstrap”:如果在Bootstrap上下文中找到任何PropertySourceLocators汽馋,則可選CompositePropertySource顯示為高優(yōu)先級(jí)侮东,并且具有非空屬性。一個(gè)例子是來(lái)自Spring Cloud Config服務(wù)器的屬性豹芯。有關(guān)如何自定義此屬性源的內(nèi)容的說(shuō)明悄雅,請(qǐng)參閱下文

“applicationConfig:[classpath:bootstrap.yml]”(如果Spring配置文件處于活動(dòng)狀態(tài)铁蹈,則為朋友)宽闲。如果您有一個(gè)bootstrap.yml(或?qū)傩裕敲催@些屬性用于配置引導(dǎo)上下文握牧,然后在父進(jìn)程設(shè)置時(shí)將它們添加到子上下文中容诬。它們的優(yōu)先級(jí)低于application.yml(或?qū)傩裕┮约白鳛閯?chuàng)建Spring Boot應(yīng)用程序的過(guò)程的正常部分添加到子級(jí)的任何其他屬性源。有關(guān)如何自定義這些屬性源的內(nèi)容的說(shuō)明沿腰,請(qǐng)參閱下文览徒。

由于屬性源的排序規(guī)則,“引導(dǎo)”條目?jī)?yōu)先颂龙,但請(qǐng)注意习蓬,這些條目不包含來(lái)自bootstrap.yml的任何數(shù)據(jù),它具有非常低的優(yōu)先級(jí)措嵌,但可用于設(shè)置默認(rèn)值躲叼。

您可以通過(guò)簡(jiǎn)單地設(shè)置您創(chuàng)建的任何ApplicationContext的父上下文來(lái)擴(kuò)展上下文層次結(jié)構(gòu),例如使用自己的界面铅匹,或使用SpringApplicationBuilder方便方法(parent()押赊,child()和sibling())。引導(dǎo)環(huán)境將是您創(chuàng)建自己的最高級(jí)祖先的父級(jí)包斑。層次結(jié)構(gòu)中的每個(gè)上下文都將有自己的“引導(dǎo)”屬性源(可能為空),以避免無(wú)意中將值從父級(jí)升級(jí)到其后代涕俗。層次結(jié)構(gòu)中的每個(gè)上下文(原則上)也可以具有不同的spring.application.name罗丰,因此如果存在配置服務(wù)器,則不同的遠(yuǎn)程屬性源再姑。普通的Spring應(yīng)用程序上下文行為規(guī)則適用于屬性解析:子環(huán)境中的屬性通過(guò)名稱和屬性源名稱覆蓋父項(xiàng)中的屬性(如果子級(jí)具有與父級(jí)名稱相同的屬性源萌抵,一個(gè)來(lái)自父母的孩子不包括在孩子中)。

請(qǐng)注意,SpringApplicationBuilder允許您在整個(gè)層次結(jié)構(gòu)中共享Environment绍填,但這不是默認(rèn)值霎桅。因此,兄弟情境尤其不需要具有相同的資料或財(cái)產(chǎn)來(lái)源讨永,盡管它們與父母共享共同點(diǎn)滔驶。

源碼來(lái)源

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市卿闹,隨后出現(xiàn)的幾起案子揭糕,更是在濱河造成了極大的恐慌,老刑警劉巖锻霎,帶你破解...
    沈念sama閱讀 218,858評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件著角,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡旋恼,警方通過(guò)查閱死者的電腦和手機(jī)吏口,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)冰更,“玉大人产徊,你說(shuō)我怎么就攤上這事《辏” “怎么了囚痴?”我有些...
    開封第一講書人閱讀 165,282評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)审葬。 經(jīng)常有香客問(wèn)我深滚,道長(zhǎng),這世上最難降的妖魔是什么涣觉? 我笑而不...
    開封第一講書人閱讀 58,842評(píng)論 1 295
  • 正文 為了忘掉前任痴荐,我火速辦了婚禮,結(jié)果婚禮上官册,老公的妹妹穿的比我還像新娘生兆。我一直安慰自己,他們只是感情好膝宁,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,857評(píng)論 6 392
  • 文/花漫 我一把揭開白布鸦难。 她就那樣靜靜地躺著,像睡著了一般员淫。 火紅的嫁衣襯著肌膚如雪合蔽。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,679評(píng)論 1 305
  • 那天介返,我揣著相機(jī)與錄音拴事,去河邊找鬼沃斤。 笑死,一個(gè)胖子當(dāng)著我的面吹牛刃宵,可吹牛的內(nèi)容都是我干的衡瓶。 我是一名探鬼主播,決...
    沈念sama閱讀 40,406評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼牲证,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼哮针!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起从隆,我...
    開封第一講書人閱讀 39,311評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤诚撵,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后键闺,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體寿烟,經(jīng)...
    沈念sama閱讀 45,767評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年辛燥,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了筛武。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,090評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡挎塌,死狀恐怖徘六,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情榴都,我是刑警寧澤待锈,帶...
    沈念sama閱讀 35,785評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站嘴高,受9級(jí)特大地震影響竿音,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜拴驮,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,420評(píng)論 3 331
  • 文/蒙蒙 一春瞬、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧套啤,春花似錦宽气、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至唆鸡,卻和暖如春窃判,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背喇闸。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人燃乍。 一個(gè)月前我還...
    沈念sama閱讀 48,298評(píng)論 3 372
  • 正文 我出身青樓唆樊,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親刻蟹。 傳聞我的和親對(duì)象是個(gè)殘疾皇子逗旁,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,033評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容