【面試普通人VS高手系列】Spring Boot中自動裝配機制的原理

跟著Mic學架構發表於2022-04-25

最近一個粉絲說,他面試了4個公司,有三個公司問他:“Spring Boot 中自動裝配機制的原理”

他回答了,感覺沒回答錯誤,但是怎麼就沒給offer呢?

對於這個問題,看看普通人和高手該如何回答。

普通人:

嗯… Spring Boot裡面的自動裝配,就是@EnableAutoConfiguration註解。

嗯…它可以實現Bean的自動管理,不需要我們手動再去配置。

高手:

自動裝配,簡單來說就是自動把第三方元件的Bean裝載到Spring IOC器裡面,不需要開發人員再去寫Bean的裝配配置。

在Spring Boot應用裡面,只需要在啟動類加上@SpringBootApplication註解就可以實現自動裝配。

@SpringBootApplication是一個複合註解,真正實現自動裝配的註解是@EnableAutoConfiguration。

image-20220322101025232

自動裝配的實現主要依靠三個核心關鍵技術。

  1. 引入Starter啟動依賴元件的時候,這個元件裡面必須要包含@Configuration配置類,在這個配置類裡面通過@Bean註解宣告需要裝配到IOC容器的Bean物件。
  2. 這個配置類是放在第三方的jar包裡面,然後通過SpringBoot中的約定優於配置思想,把這個配置類的全路徑放在classpath:/META-INF/spring.factories檔案中。這樣SpringBoot就可以知道第三方jar包裡面的配置類的位置,這個步驟主要是用到了Spring裡面的SpringFactoriesLoader來完成的。
  3. SpringBoot拿到所第三方jar包裡面宣告的配置類以後,再通過Spring提供的ImportSelector介面,實現對這些配置類的動態載入。

在我看來,SpringBoot是約定優於配置這一理念下的產物,所以在很多的地方,都會看到這類的思想。它的出現,讓開發人員更加聚焦在了業務程式碼的編寫上,而不需要去關心和業務無關的配置。

其實,自動裝配的思想,在SpringFramework3.x版本里面的@Enable註解,就有了實現的雛形。@Enable註解是模組驅動的意思,我們只需要增加某個@Enable註解,就自動開啟某個功能,而不需要針對這個功能去做Bean的配置,@Enable底層也是幫我們去自動完成這個模組相關Bean的注入。

以上,就是我對Spring Boot自動裝配機制的理解。

總結

發現了嗎?高手和普通人的回答,並不是回答的東西多和少。

而是讓面試官看到你對於這個技術領域的理解深度和自己的見解,從而讓面試官在一大堆求職者中,對你產生清晰的印象。

好的,本期的普通人VS高手面試系列就到這裡結束了,喜歡的朋友記得點贊收藏。

我是Mic,一個工作了14年的Java程式設計師,我們們下期再見。
file

版權宣告:本部落格所有文章除特別宣告外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 Mic帶你學架構
如果本篇文章對您有幫助,還請幫忙點個關注和贊,您的堅持是我不斷創作的動力。歡迎關注「跟著Mic學架構」公眾號公眾號獲取更多技術乾貨!

相關文章