tft每日頭條

 > 職場

 > springbean和factory的區别

springbean和factory的區别

職場 更新时间:2024-07-04 21:15:59

springbean和factory的區别(毫無關系的BeanFactory和FactoryBean為什麼總是被面試官提問)1

如果你的簡曆上這麼寫,熟練掌握Spring,并對Spring源碼有一定的見解(或者是讀過Spring源碼),那麼無法避免的就是要問幾個問題。

IOC的實現原理是什麼? AOP底層是如何實現的? 因為這些基本上都是面試必然要準備的題目,所以如果你能粗略的說上一些來,就可能會問一些Spring中使用到的接口,就比如今天我們要說的BeanFactory和FactoryBean有什麼不一樣(區别)?

如果你确實有些疑惑,那麼接着看下去吧。

什麼是BeanFactory?

其實Spring的源碼中,當然很多知名技術的源碼也一樣,其中聲明的類、接口,亦或者變量,都是能憑借英文看出大概的意思來的。

這個BeanFactory就是這樣,首先字面意思就是Bean工廠,再轉換一下思路,也就是個Bean容器了。

先看源代碼,上圖!

springbean和factory的區别(毫無關系的BeanFactory和FactoryBean為什麼總是被面試官提問)2

可以看到BeanFactory是一個接口,它在Spring中是最基礎的接口之一了,作用就是定義獲取bean及bean的各種屬性,在源代碼中也可以看出來,裡面有我們在編碼過程中常用到的getBean()方法。

如果你看過一些Spring源碼,知道其中有一個XmlBeanFactory類,這個類被稱為是IOC容器的基礎類,就是這麼一個基礎類其實也是基于這個BeanFactory接口來實現的,有興趣可以去看看這個類的源碼;這裡建議使用IDEA中的Diagrams功能查看UML類圖來查看各類、接口之間的關系,更容易理解。

什麼是FactoryBean?

先讀一下字面意思,工廠Bean?

也可以說成是個工廠Bean,它的職責是Spring提供給用戶的一種實例化bean的方式,當然,是要通過實現該接口才可以。

這裡還要說一下,其實Spring還有其他兩種實例化bean的方式。

一種是通過反射來利用獲取bean的class屬性,通過其class屬性實例化具體的bean。

一種是通過配置文件來實例化。

但是這兩種方法都不夠靈活,如果大家還想多了解一下這兩種方式,還請多查閱一下資料和源碼。

總結一下

總結下來,其實BeanFactory和FactoryBean半毛錢關系都沒有,就是名字像,我依稀記得以前被問到的時候,還是一臉懵逼,後來了解了以後,發現竟然是這樣。

果然面試官才是最有套路的,就是想看一下你是不是真正地去讀了一些源碼。

當被問這個問題時,隻需要将兩種具體的職責,和為Spring所做的貢獻講一講,基本上面試官就不會在這個問題上為難你了。

各位,加油,喜歡就點個贊,贊,贊,贊,贊,贊。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关職場资讯推荐

热门職場资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved