最近一個粉絲說,他面試了4個公司,有三個公司問他:“Spring Boot 中自動裝配機制的原理” 他回答了,感覺沒回答錯誤,但是怎麼就沒給offer呢? 對於這個問題,看看普通人和高手該如何回答。 普通人: 嗯… Spring Boot裡面的自動裝配,就是@EnableAutoConfigurat ...
最近一個粉絲說,他面試了4個公司,有三個公司問他:“Spring Boot 中自動裝配機制的原理”
他回答了,感覺沒回答錯誤,但是怎麼就沒給offer呢?
對於這個問題,看看普通人和高手該如何回答。
普通人:
嗯… Spring Boot裡面的自動裝配,就是@EnableAutoConfiguration註解。
嗯…它可以實現Bean的自動管理,不需要我們手動再去配置。
高手:
自動裝配,簡單來說就是自動把第三方組件的Bean裝載到Spring IOC器裡面,不需要開發人員再去寫Bean的裝配配置。
在Spring Boot應用裡面,只需要在啟動類加上@SpringBootApplication註解就可以實現自動裝配。
@SpringBootApplication是一個複合註解,真正實現自動裝配的註解是@EnableAutoConfiguration。
自動裝配的實現主要依靠三個核心關鍵技術。
- 引入Starter啟動依賴組件的時候,這個組件裡面必須要包含@Configuration配置類,在這個配置類裡面通過@Bean註解聲明需要裝配到IOC容器的Bean對象。
- 這個配置類是放在第三方的jar包裡面,然後通過SpringBoot中的約定優於配置思想,把這個配置類的全路徑放在classpath:/META-INF/spring.factories文件中。這樣SpringBoot就可以知道第三方jar包裡面的配置類的位置,這個步驟主要是用到了Spring裡面的SpringFactoriesLoader來完成的。
- SpringBoot拿到所第三方jar包裡面聲明的配置類以後,再通過Spring提供的ImportSelector介面,實現對這些配置類的動態載入。
在我看來,SpringBoot是約定優於配置這一理念下的產物,所以在很多的地方,都會看到這類的思想。它的出現,讓開發人員更加聚焦在了業務代碼的編寫上,而不需要去關心和業務無關的配置。
其實,自動裝配的思想,在SpringFramework3.x版本裡面的@Enable註解,就有了實現的雛形。@Enable註解是模塊驅動的意思,我們只需要增加某個@Enable註解,就自動打開某個功能,而不需要針對這個功能去做Bean的配置,@Enable底層也是幫我們去自動完成這個模塊相關Bean的註入。
以上,就是我對Spring Boot自動裝配機制的理解。
總結
發現了嗎?高手和普通人的回答,並不是回答的東西多和少。
而是讓面試官看到你對於這個技術領域的理解深度和自己的見解,從而讓面試官在一大堆求職者中,對你產生清晰的印象。
好的,本期的普通人VS高手面試系列就到這裡結束了,喜歡的朋友記得點贊收藏。
我是Mic,一個工作了14年的Java程式員,咱們下期再見。
版權聲明:本博客所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自
Mic帶你學架構
!
如果本篇文章對您有幫助,還請幫忙點個關註和贊,您的堅持是我不斷創作的動力。歡迎關註「跟著Mic學架構」公眾號公眾號獲取更多技術乾貨!