【Java面試】Spring中 BeanFactory和FactoryBean的區別

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

一個工作了六年多的粉絲,胸有成竹的去京東面試。

然後被Spring裡面的一個問題卡住,唉,我和他說,6年啦,Spring都沒搞明白?

那怎麼去讓面試官給你通過呢?

這個問題是: Spring中BeanFactory和FactoryBean的區別。

好吧,對於這個問題看看普通人和高手的回答。

普通人:

嗯。。。。。。。。。。

高手:

關於這個問題,我從幾個方面來回答。

首先,Spring 裡面的核心功能是IOC容器,所謂IOC容器呢,本質上就是一個Bean的容器或者是一個Bean的工廠。

它能夠根據xml裡面宣告的Bean配置進行bean的載入和初始化,然後BeanFactory來生產我們需要的各種各樣的Bean。

所以我對BeanFactory的理解了有兩個。

  • BeanFactory是所有Spring Bean容器的頂級介面,它為Spring的容器定義了一套規範,並提供像getBean這樣的方法從容器中獲取指定的Bean例項。
  • BeanFactory在產生Bean的同時,還提供瞭解決Bean之間的依賴注入的能力,也就是所謂的DI。

FactoryBean是一個工廠Bean,它是一個介面,主要的功能是動態生成某一個型別的Bean的例項,也就是說,我們可以自定義一個Bean並且載入到IOC容器裡面。

它裡面有一個重要的方法叫getObject(),這個方法裡面就是用來實現動態構建Bean的過程。

Spring Cloud裡面的OpenFeign元件,客戶端的代理類,就是使用了FactoryBean來實現的。

以上就是我對這個問題的理解。

總結

這個問題,只要稍微看過Spring框架的原始碼,怎麼都能回答出來。

關鍵在於你是否願意逼自己去學習一些工作中不常使用的技術來提升自己。

在我看來,薪資和能力是一種等價交換,在市場經濟下,能力一般又想獲得更高薪資,很顯然不可能!

需要高手面試文件(附贈阿里內部十萬字面試文件)或者有不懂的技術面試題想諮詢的小夥伴可以私信我或者評論區留言。

file

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

相關文章