溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SpringBoot中application配置文件使用方法

發布時間:2020-05-23 16:23:34 來源:億速云 閱讀:413 作者:鴿子 欄目:軟件技術

現在我們已經知道,我們可以通過在運行jar時提供一系列的參數來定制SpingBoot為我們默認做好的設置。如果我們要定制的屬性很多,在實際開發中,你可能會需要覆蓋上百個SpringBoot的默認設置,如果這些設置寫在java -jar 運行命令中一點都不優雅,也不利于維護。那如何是好?

SpringBoot提供了專門的屬性配置文件和配置接口。

SpringBoot默認加載的屬性配置文件名稱為application,就像你用Spring框架一樣,也有一個全局的配置文件。

你可以在resource目錄下創建application.properties,把需要定制的SpringBoot屬性寫入其中,
比如你要修改SpringBoot啟動的默認端口,就加入server.port屬性;要修改redis的默認端口,可以加入spring.redis屬性;要修改rabbitmq的連接地址,可以加入spring.rabbitmq.host屬性,就像這樣:
SpringBoot中application配置文件使用方法

重啟項目后,就看到默認端口已經修改為8081。這跟使用啟動命令java -jar運行道理是一樣的,只不過看起來更利于維護。如果你覺得就這么幾個參數,直接寫在啟動命令中豈不更省事?實際項目中需要進行設置的內容往往很多,甚至還要復雜。

因此,自己定義application.properties來管理框架定制屬性的意義就很重要了。

而且,application.properties的作用遠不止于此。

他還能方便區分和管理不同環境的配置。開發人員經常要在本地環境、測試環境甚至生產環境中切換,以便更好的開發或排查問題。在以前,我們可能是通過在application.properties中注釋掉一部分并寫上另一部分內容的方式來切換不同環境。然而,現在有更優雅的方式。

可以通過再application后添加不同的后綴名稱來區分不同項目環境,不用全部雜糅在一個配置文件中。比如這樣:
SpringBoot中application配置文件使用方法

一般約定,dev代表開發環境,test代表測試環境, prod代表生產環境。通過不同的后綴名稱,不同環境配置一目了然。

最后在根配置文件,也就是application.properties中添加 spring.profiles.active=dev來指定啟用哪個配置,比如這里的dev就對應application-dev.properties,也就是我們約定的開發環境配置。

那如果application.properties中和application-dev.properties都有相同的配置屬性,結果如何呢?

答案是,spring.profiles.active對應了哪個就是哪個生效,除非那個配置文件中沒有定義的屬性,才會被application.properties中定義的覆蓋,如果兩個文件中都沒有,則沿用springboot默認設置。

另外,附帶提一下,springboot配置文件還有一種yaml格式,比如上述的application.properties可以命名為application.yml,作用完全相同,只不過yaml文件是用樹形結構來編寫屬性,就像這樣:

SpringBoot中application配置文件使用方法

而當項目中同時存在application.properties和application.yml時,起作用的是application.properties。 同一目錄下,properties配置優先級 高于 YAML配置優先級。

使用建議

1、盡量統一使用一種格式的配置文件,盡量不要兩種格式混用。

2、properties雖然傳統而且好用,但官方更推薦用yaml格式,因為樹形結構可讀性更強,這也是很多編程語言的趨勢。3、一般情況下,我們都會放在resource根目錄下,也可以放在resource/config目錄下,這種情況下,優先級最高的是resource/config中的配置文件,這也是官方推薦的方式。因此,建議大家將springboot本身的配置文件放在resource/config目錄下。

最后,附上完整的配置參數清單,需要修改默認的哪些設置,對照這個清單上找到,然后application文件中覆蓋默認屬性接口。springboot的這些屬性很多是要另外在pom中添加相關的starter才能使用這些功能和參數定制。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女