「Java面試」這題答不上 建議認真看完!@Conditional註解有什麼用

“@Conditional註解有什麼用?”

但凡有Java開發經驗的同學,這個問題應該都要能回答出來。

如果回答不上來,建議認真看完這篇影片。

大家好,我是Mic,咕泡科技的聯合創始人。

考察目的

@Condition是Spring4。x版本引入的一個註解,由於這個問題本身比較簡單,所以考察範圍一般是工作1到3年左右。

考察目的就是了解求職者對Spring Framework裡面註解的瞭解情況。

作為求職者,回答的時候不過過度解讀面試官的意圖,簡單明瞭的回覆即可。

問題分析

@Conditional是Spring4版本里面提供的註解,它的作用是給需要裝載的Bean增加一個條件判斷,只有滿足條件的Bean才會裝載到IOC容器。

@Conditional註解的定義如圖所示,從這個註解中可以瞭解到幾個關鍵資訊

@Conditional註解可以修飾在類或者方法上

@Conditional註解可以接收一個或多個實現了Condition介面的類。

「Java面試」這題答不上 建議認真看完!@Conditional註解有什麼用

Condition介面的定義如圖所示,它提供了一個返回值為boolean的matches方法,基於@Conditional本身的作用不難猜出它應該是用來實現Bean是否能被裝載的判斷邏輯的。

「Java面試」這題答不上 建議認真看完!@Conditional註解有什麼用

@Conditional註解既然是用來判斷Bean是否能被裝載的條件,那麼意味著我們可以在Bean的描述邏輯上增加這樣一個註解然後透過重寫Condition介面的matches方法,自定義Bean裝載的條件。

比如下圖這種使用方法,當Spring解析這個配置類的時候,HelloService這個bean是否能被裝載到IOC容器,取決於CustomizeCondition裡面的matches方法的返回值,返回true才可以被裝載。

「Java面試」這題答不上 建議認真看完!@Conditional註解有什麼用

這就給我們Bean的裝載過程增加了很多的靈活性。

高手

@Conditional註解的作用是為Bean的裝載提供了一個條件判斷。

只有滿足條件的情況下,Spring才會把當前Bean裝載到IOC容器中。

這個條件的實現邏輯,我們可以實現Condition介面並重寫matches方法自己去實現。

所以@Conditional註解增加了Bean裝載的靈活性。

在Spring Boot裡面,對@Conditional註解做了更進一步的擴充套件,比如增加了@ConditionalOnClass、@ConditionalOnBean等註解,使得我們在使用的過程中不再需要去寫條件的邏輯。

總結

這個問題很好回答,切記不要繞來繞去說一大堆,大家可以直接參考高手的回答

好的,今天的文章就到這裡結束了,喜歡這個作品的小夥伴記得點贊收藏加關注!!!

需要高手面試文件合集(附贈大廠內部十萬字面試文件)或者有不懂的技術面試題想諮詢的小夥伴可以後臺私信傳送【Mic】或者評論區留言。

「Java面試」這題答不上 建議認真看完!@Conditional註解有什麼用