Spring Boot教程(二)(配置文件)(上)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??原創(chuàng)者:文思

一嚣镜、

? ? ? ?Spring Boot使用“習(xí)慣優(yōu)于配置”(項目中存在大量的配置,此外還內(nèi)置了一個習(xí)慣性的配置魄藕,讓你無需手動進行配置)的理念讓你的項目快速運行起來湃交。所以钻趋,我們要想把Spring Boot玩的溜,就要懂得如何開啟各個功能模塊的默認(rèn)配置。Spring Boot使用了一個全局的配置文件application.properties壁晒,放在src/main/resources目錄下骂际。Sping Boot的全局配置文件的作用是對一些默認(rèn)配置的配置值進行修改疗琉。 ? ? ? ? ? ? ?

? ? ? ? application.properties提供自定義屬性的支持,這樣我們就可以把一些常量配置在這里:


配置獲取及使用方式:

1歉铝、好用的value

在要使用的地方通過注解@Value(value=”${config.name}”)就可以綁定到你想要的屬性上面

@value很強大盈简,默認(rèn)取了resource下的application和testproperties兩個配置文件中的屬性都可以去掉,不需要指名哪個文件

??二太示、

有時候?qū)傩蕴嗔四停粋€個綁定到屬性字段上太累,可以創(chuàng)建一個配置文件的對象的bean类缤,這里我們建一個ConfigBean.java類臼勉,頂部需要使用注解@ConfigurationProperties(prefix = “test”)來指明使用哪個?

Application.propertis:

server.port=8081

test.testconfig=test-ConfigurationProperties

testproperties.properties:

test.user=2

test.psw=3

說明:
@ConfigurationProperties(prefix="test")中不用指明要獲取哪個配置文件的屬性,可以自動根可prefix自動查找所有配置文件中test開頭的屬性餐弱。port在配置文件中是以server開頭宴霸,所以取不到就默認(rèn)成了0囱晴。

再嘗試一種情況,我想在一個類中取多個prefix指定的屬性封裝成類瓢谢,可以嗎畸写?試試看:

這樣寫不報錯,難道支持多前綴的參數(shù)同時取嗎氓扛?應(yīng)該是value的值的格式 無法進行校驗吧枯芬,這也正常。但是所有定義的這些屬性都可以取到值嗎采郎?

看運行結(jié)果:什么值都沒有取到千所。和推測的有點不一樣,難道@ConfigurationProperties只支持使用一種前綴參數(shù)嗎尉剩?所以下一步要重點研究一下@ConfigurationProperties這個注解了真慢,看看此注解的源碼,此分析放在下一篇文中理茎。

因為有@EnableAutoConfiguration了黑界,所以嘗試去掉@EnableConfigurationProperties({ConfigBean.class}),結(jié)果報錯無法啟動皂林,說ConfigBean無法找到朗鸠。

根據(jù)注解名稱來推測原因:@EnableAutoConfiguration,auto自動的意思础倍,自動找的話一般都是按常用約定來吧烛占,而application.properties就是boot的默認(rèn)約定配置文件,那改成ApplictionBean試試看:

仍然報錯沟启,同時@value仍然可以取得配置文件值忆家,說明@EnableAutoConfiguration這個注解就不是針對默認(rèn)和自定義配置文件類處理的。所以下一步要重點研究一下@EnableAutoConfiguration這個注解了德迹,個人推測是boot框架中自身模塊的自動配置管理服務(wù)芽卿。

三、

配置文件的優(yōu)先級:

配置文件中${random}可以用來生成各種不同類型的隨機值胳搞,從而簡化了代碼生成的麻煩卸例,例如生成int值、long值或者string字符串肌毅。

config.secret=${random.value}

config.number=${random.int}

config.bignumber=${random.long}

config.uuid=${random.uuid}

config.number.less.than.ten=${random.int(10)}

config.number.in.range=${random.int[1024,65536]}

application.properties和application.yml文件可以放在一下四個位置:

外置筷转,在相對于應(yīng)用程序運行目錄的/congfig子目錄里。

外置悬而,在應(yīng)用程序運行的目錄里

內(nèi)置呜舒,在config包內(nèi)

內(nèi)置,在Classpath根目錄

同樣摊滔,這個列表按照優(yōu)先級排序阴绢,也就是說店乐,src/main/resources/config下application.properties覆蓋src/main/resources下application.properties中相同的屬性。

Profile-多環(huán)境配置

當(dāng)應(yīng)用程序需要部署到不同運行環(huán)境時呻袭,一些配置細(xì)節(jié)通常會有所不同眨八,最簡單的比如日志,生產(chǎn)日志會將日志級別設(shè)置為WARN或更高級別左电,并將日志寫入日志文件廉侧,而開發(fā)的時候需要日志級別為DEBUG,日志輸出到控制臺即可篓足。

如果按照以前的做法段誊,就是每次發(fā)布的時候替換掉配置文件,這樣太麻煩了栈拖,Spring Boot的Profile就給我們提供了解決方案连舍,命令帶上參數(shù)就搞定。

在Spring Boot中多環(huán)境配置文件名需要滿足application-{profile}.properties的格式涩哟,其中{profile}對應(yīng)你的環(huán)境標(biāo)識索赏,比如:

application-dev.properties:開發(fā)環(huán)境

application-prod.properties:生產(chǎn)環(huán)境

想要使用對應(yīng)的環(huán)境,只需要在application.properties中使用spring.profiles.active屬性來設(shè)置贴彼,值對應(yīng)上面提到的{profile}潜腻,這里就是指dev、prod這2個器仗。

#開發(fā)運行環(huán)境

spring.profiles.active=dev

教程二上級整理講解完畢融涣,敬請期待下集。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末精钮,一起剝皮案震驚了整個濱河市威鹿,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌轨香,老刑警劉巖专普,帶你破解...
    沈念sama閱讀 219,110評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異弹沽,居然都是意外死亡,警方通過查閱死者的電腦和手機筋粗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評論 3 395
  • 文/潘曉璐 我一進店門策橘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人娜亿,你說我怎么就攤上這事丽已。” “怎么了买决?”我有些...
    開封第一講書人閱讀 165,474評論 0 356
  • 文/不壞的土叔 我叫張陵沛婴,是天一觀的道長吼畏。 經(jīng)常有香客問我,道長嘁灯,這世上最難降的妖魔是什么泻蚊? 我笑而不...
    開封第一講書人閱讀 58,881評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮丑婿,結(jié)果婚禮上性雄,老公的妹妹穿的比我還像新娘。我一直安慰自己羹奉,他們只是感情好秒旋,可當(dāng)我...
    茶點故事閱讀 67,902評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著诀拭,像睡著了一般迁筛。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上耕挨,一...
    開封第一講書人閱讀 51,698評論 1 305
  • 那天细卧,我揣著相機與錄音,去河邊找鬼俗孝。 笑死酒甸,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的赋铝。 我是一名探鬼主播插勤,決...
    沈念sama閱讀 40,418評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼革骨!你這毒婦竟也來了农尖?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,332評論 0 276
  • 序言:老撾萬榮一對情侶失蹤良哲,失蹤者是張志新(化名)和其女友劉穎盛卡,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體筑凫,經(jīng)...
    沈念sama閱讀 45,796評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡滑沧,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,968評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了巍实。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片滓技。...
    茶點故事閱讀 40,110評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖棚潦,靈堂內(nèi)的尸體忽然破棺而出令漂,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 35,792評論 5 346
  • 正文 年R本政府宣布叠必,位于F島的核電站荚孵,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏纬朝。R本人自食惡果不足惜收叶,卻給世界環(huán)境...
    茶點故事閱讀 41,455評論 3 331
  • 文/蒙蒙 一抒蚜、第九天 我趴在偏房一處隱蔽的房頂上張望填硕。 院中可真熱鬧,春花似錦峻仇、人聲如沸俄讹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,003評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽患膛。三九已至摊阀,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間踪蹬,已是汗流浹背胞此。 一陣腳步聲響...
    開封第一講書人閱讀 33,130評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留跃捣,地道東北人漱牵。 一個月前我還...
    沈念sama閱讀 48,348評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像疚漆,于是被迫代替她去往敵國和親酣胀。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,047評論 2 355

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