SpringBoot2.x基礎(chǔ)篇:配置文件中占位符的使用

知識改變命運,擼碼使我快樂盟猖,2020繼續(xù)游走在開源界

點贊再看舰罚,養(yǎng)成習慣

給我來個Star吧,點擊了解下基于SpringBoot的組件化接口服務(wù)落地解決方案

概念

占位符是一種靈活的配置方式憨栽,可以讓我們很靈活的使用配置參數(shù),@Value注解的配置也是占位符的一種體現(xiàn)方式,這種方式可以從Environment內(nèi)獲取對應(yīng)的配置值屑柔。

推薦閱讀

配置方式

application.yml/properties配置文件內(nèi)可以直接使用占位符來進行配置的相互引用屡萤,如下所示:

system:
  name: ${spring.application.name}
spring:
  application:
    name: project-sample

在上面的配置中,name配置直接引用了spring.application.name的配置值掸宛,這樣我們在系統(tǒng)中通過@Value("${name}")或者通過@ConfigurationProperties方式使用時死陆,得到的值都為project-sample

// @Value方式
@Value("${system.name}")
private String name;

// @ConfigurationProperties方式
@Configuration
@ConfigurationProperties(prefix = "system")
static class LoadConfig {
  private String name;

  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }
}

這樣方式極大地減少了相同的配置出現(xiàn)唧瘾,讓我們在配置文件中也可以實現(xiàn)類似于常量的定義措译。

使用默認值

當我們使用@Value注解來注入配置參數(shù)時,如果所引入的配置為NULL饰序,啟動項目時會拋出異常领虹,項目無法正常啟動,所以我們有必要添加一個默認值菌羽,如下所示:

system:
  name: ${spring.application.name:default}
#spring:
#  application:
#    name: project-sample

在上面配置中把spring.application.name注釋掉掠械,當我們使用${spring.application.name}占位符時其實并未引用到有效的值,通過${xxx:defaultValue}的形式可以配置默認值注祖,當占位符所引用的配置為NULL時,將會使用默認值(默認值的類型要對配置匹配)均唉。

也可以通過@Value("${system.name:default}")這種方式配置默認值是晨,不建議使用這種方式,默認值有變動時舔箭,我們還要一個一個修改罩缴,太麻煩了,不要給自己找事干...

當然對于配置的注入還是推薦使用@ConfigurationProperties层扶,完全遵循OOP設(shè)計方式箫章,在應(yīng)用程序啟動時進行賦值,就算是引用的配置為NULL沒有默認值镜会,也不會出現(xiàn)啟動異常的問題檬寂。

“短”命令行參數(shù)

如果你對命令行參數(shù)不熟悉,可以訪問 SpringBoot2.x基礎(chǔ)篇:靈活的使用外部化配置信息 學習戳表。

在實際部署應(yīng)用程序時桶至,有很多的配置是動態(tài)的,命令行參數(shù)是一個不錯的方式匾旭,不過SpringBoot所提供的配置參數(shù)名稱都比較長镣屹,對此我們完全可以利用占位符配置方式實現(xiàn)自定義。

占位符是從Environment內(nèi)讀取對應(yīng)的配置值价涝,而命令行參數(shù)在應(yīng)用程序啟動時會被一并加入到Environment中女蜈,因此也就實現(xiàn)了占位符動態(tài)配置,其實這個“短”的含義,是你定義的新的配置名稱比較短而已伪窖。

假設(shè)我們的端口號需要動態(tài)指定逸寓,配置文件中可以通過如下的方式配置:

server:
  port: ${port:8080}

port是我們定義的“短”占位符,在應(yīng)用程序啟動時并未指定則使用默認值8080惰许。

java -jar project-sample.jar --port=9090

通過--port=9090命令行參數(shù)席覆,應(yīng)用程序啟動時端口號就變?yōu)榱?code>9090。

作者個人 博客
使用開源框架 ApiBoot 助你成為Api接口服務(wù)架構(gòu)師

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末汹买,一起剝皮案震驚了整個濱河市佩伤,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌晦毙,老刑警劉巖生巡,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異见妒,居然都是意外死亡孤荣,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進店門须揣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來盐股,“玉大人,你說我怎么就攤上這事耻卡》柚” “怎么了?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵卵酪,是天一觀的道長幌蚊。 經(jīng)常有香客問我,道長溃卡,這世上最難降的妖魔是什么溢豆? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮瘸羡,結(jié)果婚禮上漩仙,老公的妹妹穿的比我還像新娘。我一直安慰自己最铁,他們只是感情好讯赏,可當我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著冷尉,像睡著了一般漱挎。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上雀哨,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天磕谅,我揣著相機與錄音私爷,去河邊找鬼。 笑死膊夹,一個胖子當著我的面吹牛衬浑,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播放刨,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼工秩,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了进统?” 一聲冷哼從身側(cè)響起助币,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎螟碎,沒想到半個月后眉菱,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡掉分,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年俭缓,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片酥郭。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡华坦,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出不从,到底是詐尸還是另有隱情季春,我是刑警寧澤,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布消返,位于F島的核電站,受9級特大地震影響耘拇,放射性物質(zhì)發(fā)生泄漏撵颊。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一惫叛、第九天 我趴在偏房一處隱蔽的房頂上張望倡勇。 院中可真熱鬧,春花似錦嘉涌、人聲如沸妻熊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽扔役。三九已至,卻和暖如春警医,著一層夾襖步出監(jiān)牢的瞬間亿胸,已是汗流浹背坯钦。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留侈玄,地道東北人婉刀。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像序仙,于是被迫代替她去往敵國和親突颊。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,577評論 2 353

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