springboot在日常開發中減少了我們許多任務作量 減少了很多xml配置,這都得益於springboot自動裝配的特性。
那麼springboot是如何實現自動裝配的呢 ?
首先我們淺顯得介紹一些 springboot的一些主要註解:
@configuration 用於宣告定義bean 熟悉spring的應該都明白 這也是springboot自動裝配關鍵的註解之一 其實就是平常spring配置檔案中我們寫的bean
@enableautoconfiguration 用來開啟springboot自動配置的註解 ,這個也是自動裝配中很重要的註解
@configurationproperties 用來讀取配置檔案 並封裝成實體類
@enableconfigurationproperties 這個一般要配合@configurationproperties使用 可以使@configurationproperties封裝成的實體類成功注入(前提是@configurationproperties的實體類沒有被@component註解)
除了這些註解 還有許多其他註解 就不一一闡述。
接下來我們就從springboot的啟動類開始講解springboot自動裝配的原理
我們依次講解:
首先講解一下@springbootconfiguration這個註解 這個其實就是上面介紹過的@configuration的註解 用於定義bean的,springboot的啟動類其實也就是作為spring的乙個bean注入到spring容器中。
@componentscan 是spring中的註解 主要就是定義掃瞄的路徑從中找出標識了需要裝配的類自動裝配到spring的bean容器中
接下裡就是@enableautoconfiguration這個註解 這個是開啟自動裝配的核心註解,他的作用就是獲取配置類 掃瞄並注入ioc容器中進行管理,他也是組合註解 我們點進去看又能看到
@autoconfigurationpackage 和@import這2個註解
@autoconfigurationpackage新增該註解的類所在的package 作為 自動配置package 進行管理,個人的理解吧 我覺得這個註解的含義就是掃瞄springboot所在包 將其配置類交給ioc管理。
@import()這個匯入autoconfigurationimportselector.class這個類,將其注入spring容器 而這個匯入的類的作用可以幫助將所有符合條件的@configuration配置交給spring的ioc容器進行注入。
這裡面有個selectimports方法 裡
這些類基本都是被@configuration註解的
簡而言之,就是spring boot在啟動的時候就是從類路徑下的meta-inf/spring.factories中獲取需要自動裝配的類 (一些配置元件),找到這些類(***autoconfiguration),通過springfactoriesloader機制建立對應的bean,注入到容器中,完成了自動注入spring容器,本來需要在spring的xml配置檔案中去配置bean的操作就免去了 ,也就是springboot完成了自動裝配。
Springboot自動裝配
而下面那個 import 這個類點進去主要就是為了載入springboot的各種配置檔案。在這個類中你可以找到如下這個方法,去載入配置路徑為meta inf spring autoconfigure metadata.properties檔案。還有乙個方法則會去載入目錄下meta inf sprin...
spring boot 之自動裝配
在之前用spring框架進行開發的時候,我們要寫巨多的配置檔案,並且隨著功能的完善,還需要不停的修改這些檔案,非常痛苦,但是在使用spring boot 之後就沒有這些煩惱啦 雖然還是要寫一點點,但是對比以前,忽略不計 是真的不需要寫這些檔案了嗎?其實這些檔案時spring boot 在啟動時幫我們...
SpringBoot 自動裝配原理
enableautoconfiguration 自動裝配的註解 當spring容器載入中,會呼叫invokebeanfactorypostprocessors 這裡會去讀取beandefined各種載入方法,自動裝配則使用了 import註解實現呼叫autoconfigureimportseleto...