自動配置原理 SpringBoot

2021-10-14 04:22:45 字數 2616 閱讀 1228

配置檔案到底能寫什麼?怎麼寫?

springboot官方文件中有大量的配置,我們無法全部記住

分析自動配置原理

我們以**httpencodingautoconfiguration(http編碼自動配置)**為例解釋自動配置原理;

//表示這是乙個配置類,和以前編寫的配置檔案一樣,也可以給容器中新增元件;

@configuration

//啟動指定類的configurationproperties功能;

//進入這個httpproperties檢視,將配置檔案中對應的值和httpproperties繫結起來;

//並把httpproperties加入到ioc容器中

@enableconfigurationproperties()

//spring底層@conditional註解

//根據不同的條件判斷,如果滿足指定的條件,整個配置類裡面的配置就會生效;

//這裡的意思就是判斷當前應用是否是web應用,如果是,當前配置類生效

( type = type.servlet

)//判斷當前專案有沒有這個類characterencodingfilter;springmvc中進行亂碼解決的過濾器;

@conditionalonclass()

//判斷配置檔案中是否存在某個配置:spring.http.encoding.enabled;

//如果不存在,判斷也是成立的

//即使我們配置檔案中不配置pring.http.encoding.enabled=true,也是預設生效的;

//給容器中新增乙個元件,這個元件的某些值需要從properties中獲取

@bean

@conditionalo****singbean

//判斷容器沒有這個元件?

public characterencodingfilter characterencodingfilter()

//。。。。。。。

}

一句話總結 :根據當前不同的條件判斷,決定這個配置類是否生效!

//從配置檔案中獲取指定的值和bean的屬性進行繫結

我們去配置檔案裡面試試字首,看提示!

精髓1、springboot啟動會載入大量的自動配置類

2、我們看我們需要的功能有沒有在springboot預設寫好的自動配置類當中;

3、我們再來看這個自動配置類中到底配置了哪些元件;(只要我們要用的元件存在在其中,我們就不需要再手動配置了)

4、給容器中自動配置類新增元件的時候,會從properties類中獲取某些屬性。我們只需要在配置檔案中指定這些屬性的值即可;

*****xautoconfigurartion:自動配置類;**給容器中新增元件

***xproperties:封裝配置檔案中相關屬性;

了解:@conditional

了解完自動裝配的原理後,我們來關注乙個細節問題,自動配置類必須在一定的條件下才能生效;

@conditional派生註解(spring註解版原生的@conditional作用)

作用:必須是@conditional指定的條件成立,才給容器中新增元件,配置配裡面的所有內容才生效;

那麼多的自動配置類,必須在一定的條件下才能生效;也就是說,我們載入了這麼多的配置類,但不是所有的都生效了。

我們怎麼知道哪些自動配置類生效?

我們可以通過啟用 debug=true屬性;來讓控制台列印自動配置報告,這樣我們就可以很方便的知道哪些自動配置類生效;

#開啟springboot的除錯類

debug=

true

positive matches:(自動配置類啟用的:正匹配)negative matches:(沒有啟動,沒有匹配成功的自動配置類:負匹配)unconditional classes: (沒有條件的類)【演示:檢視輸出的日誌】

掌握吸收理解原理,即可以不變應萬變!

springboot自動配置原理

我首先看了一些部落格,大多數是這樣解釋的。springboot 自動配置主要通過 enableautoconfiguration,conditional,enableconfigurationproperties 或者 configurationproperties 等幾個註解來進行自動配置完成的。...

Spring Boot 自動配置原理

自動配置原理 配置檔案到底能寫什麼?怎麼寫?自動配置原理 注 springfactoriesloader.loadfactorynames 掃瞄所有jar包類路徑下 meta inf spring.factories 把掃瞄到的這些檔案的內容包裝成properties物件 從properties中獲...

SpringBoot自動配置原理

其中註解 springbootconfiguration是springboot的註解,宣告這個類是個配置類,和spring的 configuration是乙個作用 enableautoconfiguration的作用是開啟自動註解,我們看看這個註解的內容 其中配置檔案中的屬性enableautoco...