原文地址html
目錄java
概述spring
2.配置文件位置數組
3.配置文件的定義服務器
3.3若是是定義數組dom
4.配置文件的使用spring-boot
Springboot開發中很重要的一句話就是約定大於配置,有不少配置都有默認值,咱們使用便可。可是若是要根據本身的需求替換默認配置的話,能夠經過配置文件修改。
主要用來修改Boot中相關默認的配置,有application.properties或者application.yml(application.yaml)兩種配置方式進行配置。
SpringBoot默認會從Resources目錄下加載application.properties或application.yml(application.yaml)文件
對於application.properties配置文件,咱們只需經過以下相似的鍵值對進行配置相關參數便可,這裏主要看下yml方式要注意的地方
在yml中如何定義配置,格式以下
k:(空格)v表示一對鍵值對(空格必須有);以空格的縮進來控制層級關係;只要是左對齊的一列數據,都是同一個層級的,
直接使用k: v:書寫便可,好比 age: 14
若是是字符串,雙引號中的特殊字符會表達自己想表示的意思,單引號中的特殊字符將做爲普通字符輸出
name: "zhangsan \n lisi" 則輸出 zhangsan 換行lisi
name: 'zhangsan \n lisi' 則輸出 zhangsan \n lisi
Person:
name: 李四
age: 14
行內寫法
Person: {name: 李四,age: 14}
用-值表示數組中的一個元素
pets:
-cat
-dog
行內寫法
pets: {cat,dog}
要能綁定配置文件中的屬性,只有使用註解@Configuration或者@Component標註讓一個類成爲容器中的組件才能夠綁定屬性,無論是yml仍是properies配置文件,讀取裏面的值綁定到屬性的方式有兩種。
第一種:使用@ConfigurationProperties(prefix = "person")註解,其中的prefix表示這個前綴下面的全部屬性
第二種:使用@value()註解,括號中能夠是字面量、${配置文件中的值}、#{SpEL表達式},
測試
注意:
1. 使用@ConfigurationProperties方式能夠進行配置文件與實體字段的自動映射,但須要字段必須提供set方法才能夠,而使用@Value註解修飾的字段不須要提供set方法
2.綁定的時候導入下面依賴代碼自動提示
3.兩種方式比較
4.將上面yml文件的person配置換成properties配置,一樣綁定成功
上面兩種方式讀取的配置文件默認都是全局的即application配置文件,可是全部的配置都寫在全局配置文件中就顯得很亂,能夠單獨本身的配置文件,使用@PropertySource註解
經常使用的隨機數
當咱們的應用須要部署到不一樣的運行環境時,一些配置細節一般會有所不一樣,最簡單的好比日誌,生產環境下會將日誌級別設置爲warn或者更高級別的,並將日誌寫入日誌文件,可是開發環境下須要將日誌級別設置爲DUBUG,日誌輸出到控制檯便可,若是按照之前的作法,每次發佈的時候替換掉配置文件,這樣太麻煩了Springboot的Profile就解決了這一問題,命令帶參數就搞定
以下圖咱們能夠針對不一樣環境定義對應的配置文件
在主配置文件中經過spring.profiles.active=dev或者spring.profiles.active=pro選擇便可
除了上面這種選擇性引入對應的配置文件,常見的其餘幾種方式以下
1.運行的時候Edit配置文件
2.打包項目的時候
java -jar spring-boot-02-config-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev
項目打包好之後,咱們可使用命令行參數的形式,啓動項目的時候來指定配置文件的新位置;指定配置文件和默
認加載的這些配置文件共同起做用造成互補配置;
java -jar spring-boot-02-config-02-0.0.1-SNAPSHOT.jar --spring.config.location=G:/application.properties
這種寫法會造成互補配置,特別是在運維的時候,能夠運行的時候使用外部一些配置。
好比我在服務器發佈了項目wxcrawler
要使用外置配置文件就很簡單了,在jar所在目錄新建config文件夾,而後放入配置文件,或者直接放配置文件在jar目錄
咱們回顧目錄4的知識,能夠看到咱們在配置文件中配置了Person相關屬性的值,要想使用這些值必需定義一個Person的組件,可是咱們直接可使用相似server.port=8080相關的配置,而不用定義相關的組件類,由於boot已經幫咱們定義了常見的組件配置類,咱們只需定義這配置類的屬性值,會自動綁定。那咱們到底能夠配置哪些相似server.port=8080參數呢,能夠查看官網說明
公衆號 java一號 更多java實戰項目資料、技術幹活。更重要的是小猿願成爲你編程路上的一個朋友!
用心寫好每一篇文章,真心對待每個讀者
文章首發地址: www.javayihao.top
首發公衆號: java一號