




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第三章SpringBoot項(xiàng)目屬性配置學(xué)習(xí)目標(biāo)掌握YAML語法。熟悉SpringBoot常用的YAML配置。熟悉YAML自定義屬性、多環(huán)境配置和加載順序。通過第2章,我們大致熟悉了SpringBoot的基本開發(fā)給我們帶來的快速開發(fā)的便利性,但是在配置項(xiàng)目的時(shí)候我們使用的是properties格式的文件,當(dāng)配置的內(nèi)容過長或者太多的時(shí)候,查看和配置就會變得不太方便。所以本章,我們來學(xué)習(xí)SpringBoot開發(fā)中使用的另外一種配置文件格式Y(jié)AML。YAML介紹12YAML自定義屬性配置3多環(huán)境配置4YAML加載順序YAML介紹YAML(YetAnotherMarkupLanguage)誕生于2001年5月,它是一種配置文件格式,后綴名為“.yml”。它可用于多種語言,如Java、C/C++、Ruby、Python、Perl、C#、PHP等。YAML最大的優(yōu)點(diǎn)就是簡潔。使用XML、properties和YAML方式配置數(shù)據(jù)源的程序,同樣是數(shù)據(jù)源配置,YAML就顯得格外簡潔。所以,寫同樣的配置顯然用YAML花的時(shí)間更少。因?yàn)閅AML是樹狀結(jié)構(gòu),所以它的第二個優(yōu)點(diǎn)便是結(jié)構(gòu)層次清晰,并且配置項(xiàng)可以收起和展開。因此,它比其他類型的配置文件更易于維護(hù)。例如,同樣是更改數(shù)據(jù)源配置,YAML會顯得更加直觀一些。
YAML介紹補(bǔ)充說明:使用YAML方式配置數(shù)據(jù)源之前需要先引入數(shù)據(jù)庫連接驅(qū)動的依賴。YAML介紹YAML語法(1)對大小寫敏感(如果配置項(xiàng)的單詞是小寫,就不能用大寫;如果配置項(xiàng)的單詞是大寫,就不能用小寫)。(2)使用冒號賦值,即鍵值對形式,且值和冒號之間間隔一個空格。(3)“-”和駝峰命名法(指混合使用大小寫字母來構(gòu)成變量或函數(shù)名字的方法)都可以用,如“driver-class-name”也可寫成“driverClassName”。(4)使用縮進(jìn)表示層級關(guān)系,同層必須左對齊。(5)縮進(jìn)使用空格,空格數(shù)無限制,只要同層左對齊即可,不建議使用制表符。(6)注釋以“#”開頭,只能使用單行注釋。(7)數(shù)組元素以“-”開頭,所有元素也可寫在一行,用方括號標(biāo)注。(8)字符串可以不用單引號或雙引號標(biāo)注,除非含有特殊字符。(9)在一個文件中,可同時(shí)包含多個文件,用“---”分隔。
YAML介紹SpringBoot常用的YAML基本配置案例
如程序清單3-5所示,SpringBoot常用的YAML基本配置包括設(shè)置服務(wù)器端口號、項(xiàng)目根路徑、應(yīng)用名稱和數(shù)據(jù)源等。當(dāng)我們把端口號更改為“8888”,項(xiàng)目根路徑更改為“/demo”時(shí),訪問hello接口則應(yīng)該輸入“l(fā)ocalhost:8888/demo/hello”,如圖3-1所示。當(dāng)然,記得先重啟SpringBoot。YAML介紹12YAML自定義屬性配置3多環(huán)境配置4YAML加載順序YAML自定義屬性配置在YAML中,我們除了可以使用SpringBoot的配置屬性外,也可以使用自定義屬性。而獲取自定義屬性的值有兩種方式:@Value和@ConfigurationProperties。我們先來看看@Value方式。首先,我們在application.yml中寫入自定義屬性,如程序清單3-6所示。然后,在HelloController類中添加代碼,如程序清單3-7所示。首先,給HelloController類添加一個類型為String的成員變量通過@Value得到Y(jié)AML中對應(yīng)的值,注意這里必須用“${}”的形式。然后,添加一個getName方法,通過返回name的值來驗(yàn)證是否能獲取到Y(jié)AML中自定義屬性的值。如圖3-2所示,可以看到成功獲取到name的值。YAML自定義屬性配置YAML自定義屬性配置另一種方式是用@ConfigurationProperties來獲取YAML中整個student對象。所以,需要新建一個類來接收,這里將這個類建立在entity目錄下。類的命名沒有約束,只需要將@ConfigurationProperties的prefix設(shè)置為“student”,并且這個類中屬性的名字和YAML中student的屬性名一一對應(yīng)即可,如程序清單3-8所示。在類上添加@Component注解,表示交給Spring容器實(shí)例化Bean,并且屬性會根據(jù)YAML中配置的屬性名自動注入類中的屬性。YAML自定義屬性配置然后,在HelloController類中添加代碼,如程序清單3-9所示。首先,給HelloController類添加一個類型為Student對象的成員變量student,再給它加上@Autowired注解,這時(shí)Spring便能自動裝配,也就是Spring能幫我們注入一個實(shí)例化好的Student對象。然后,添加一個getStudent方法,通過返回student對象來驗(yàn)證是否能獲取到Y(jié)AML中自定義屬性的值。如圖3-3所示,可以看到成功獲取到整個student對象。綜上所述,@Value適用于獲取單一的屬性值,而@ConfigurationProperties適用于獲取帶有屬性的對象。YAML自定義屬性配置注意,Student類上我們寫了一個@Data,它是Lombok注解,Lombok是用來簡化代碼提高開發(fā)效率的一個插件。加上@Data,類就具有了getter和setter方法,并重寫了equals、toString等方法。常用的Lombok注解還有@AllArgsConstructor、@NoArgsConstructor、@Log4j等。要想使用Lombok,需要先添加依賴,如程序清單3-10所示?!皃rovided”表示只用于編譯和測試,打包不包含此依賴。然后,需要給IDEA安裝Lombok插件,如圖3-4所示,在“Plugins”中搜索“l(fā)ombok”,然后單擊“Install”按鈕即可。YAML自定義屬性配置YAML介紹12YAML自定義屬性配置3多環(huán)境配置4YAML加載順序多環(huán)境配置一個項(xiàng)目通常有三種環(huán)境,分別是開發(fā)環(huán)境、測試環(huán)境和生產(chǎn)環(huán)境。每個環(huán)境對應(yīng)著不同的階段,開發(fā)環(huán)境和測試環(huán)境顧名思義就是用于開發(fā)和測試階段,而生產(chǎn)環(huán)境則用于最終的部署上線,所以也叫線上環(huán)境。正因?yàn)榄h(huán)境不同,所以配置也會有不同之處。例如,開發(fā)環(huán)境的數(shù)據(jù)源在本地,而生產(chǎn)環(huán)境則是在遠(yuǎn)程服務(wù)器。
既然有這么多環(huán)境,是不是每次切換都得修改YAML呢?當(dāng)然不用。YAML提供了多環(huán)境配置策略,它有兩種寫法,一種是三個環(huán)境寫在一個YAML里,另一種就是每個環(huán)境都寫一個YAML。當(dāng)三個環(huán)境寫在一個YAML時(shí),不同環(huán)境的配置之間用“---”間隔,配置三種環(huán)境的三個不同端口。“profiles”表示配置環(huán)境名,“active”表示激活哪一個配置環(huán)境。我們通常使用“dev”表示開發(fā)環(huán)境,“test”表示測試環(huán)境,“pro”表示生產(chǎn)環(huán)境。每個環(huán)境單獨(dú)寫YAML怎么寫呢?建立四個YAML文件,注意每個環(huán)境對應(yīng)的命名,“-”后面跟環(huán)境名。“application.yml”中只寫激活哪個配置文件,其他的YAML則只寫相應(yīng)的配置即可,不用再聲明“profiles”。使用這種多環(huán)境配置策略,在不同的環(huán)境之間切換只需要更改“active”即可,或者也可以在打成jar包后啟動時(shí)通過命令方式激活指定的環(huán)境。不同環(huán)境配置寫在一個YAML中適用于環(huán)境配置差異較小的項(xiàng)目,而寫在不同的YAML中則適用于環(huán)境配置差異較大的項(xiàng)目。
多環(huán)境配置YAML介紹12YAML自定義屬性配置3多環(huán)境配置4YAML加載順序YAML加載順序配置文件加載順序要考慮兩點(diǎn),一是配置文件的類型,二是配置文件所在目錄。高優(yōu)先級的配置文件會優(yōu)先加載,并且會覆蓋低優(yōu)先級的配置文件。首先考慮配置文件的類型,我們通過查看圖3-6所示的SpringBoot父工程的POM可以得知properties的優(yōu)先級高于YAML。YAML加載順序我們做一個實(shí)驗(yàn),新建一個“perties”文件,設(shè)置端口為8080,如圖3-7所示。YAML設(shè)置的端口還是8888。我們重啟項(xiàng)目,如圖3-8所示,可以看到端口為8080,證明properties的優(yōu)先級高于YAML。YAML加載順序接著考慮配置文件所在目錄。我們通過查看ConfigFileApplicationListener的屬性DEFAULT_SEARCH_LOCATIONS得知SpringBoot會分別掃描5個路徑,如圖3-9所示。它們按優(yōu)先級從低到高排列分別是“classpath:/”“classpath:/config/”“file:./”“file:./config/*/”“file:./config/”?!癱lasspath”是指編譯生成的classes目錄的路徑,而項(xiàng)目中java目錄下的包和Java文件的編譯結(jié)果就是存放在classes中的。又因?yàn)閞esources和java同級,所以編譯后,在resources下的配置文件就直接在classes下,因此在resources下建立一個config目錄,里面寫的配置文件優(yōu)先級最高。“file”其實(shí)是指根目錄路徑,也就是“com.example.demo”路徑。YAML加載順序我們做一個實(shí)驗(yàn),分別在根目錄下的config和resources下的config中建立配置文件,如圖3-10所示。配置文件中設(shè)置不同的端口,根目錄下的c
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國螺旋埋弧焊管行業(yè)發(fā)展?fàn)顩r及營銷戰(zhàn)略研究報(bào)告
- 2025-2030年中國營養(yǎng)煲行業(yè)運(yùn)行動態(tài)分析與營銷策略研究報(bào)告
- 2025-2030年中國花椒大料行業(yè)運(yùn)營狀況及發(fā)展前景分析報(bào)告
- 2025-2030年中國膦酸脲行業(yè)運(yùn)行狀況與前景趨勢分析報(bào)告
- 2025-2030年中國膠合板行業(yè)十三五規(guī)劃及發(fā)展盈利分析報(bào)告
- 2025-2030年中國聚丁烯管行業(yè)現(xiàn)狀調(diào)研及發(fā)展?jié)摿Ψ治鰣?bào)告
- 2025-2030年中國紙杯機(jī)行業(yè)運(yùn)行狀況及前景趨勢分析報(bào)告
- 2025-2030年中國粽子行業(yè)十三五規(guī)劃及發(fā)展盈利分析報(bào)告
- 2025江西省建筑安全員-B證考試題庫附答案
- 珠??萍紝W(xué)院《邊緣計(jì)算》2023-2024學(xué)年第二學(xué)期期末試卷
- 4.2依法履行義務(wù) 教案 -2024-2025學(xué)年統(tǒng)編版道德與法治八年級下冊
- NB/T 11526-2024煤礦微震監(jiān)測系統(tǒng)通用技術(shù)條件
- 2025年福建長汀金龍稀土有限公司招聘筆試參考題庫含答案解析
- 公司安全事故隱患內(nèi)部舉報(bào)、報(bào)告獎勵制度
- 云停車平臺商戶使用說明
- 教師如何做小課題研究(李海波)
- 確認(rèn)民族成分申請書
- 航空煤油 MSDS 安全技術(shù)說明書
- GB38995-2020嬰幼兒用奶瓶和奶嘴
- 中職《普通話》課程標(biāo)準(zhǔn)(共7頁)
- 修訂韋氏記憶量表(WMS-乙式).doc
評論
0/150
提交評論