java、程序員、後端服務開發、Spring
一個業務框架的特殊功能必須藉助FactoryBean來實現代理功能
目測一般開發不會接觸到
面試過程
- 面試官:說下Spring的FactoryBean
- 程序汪汪:不知道,我就知道有個BeanFactory
- 面試官:你工作好多年了,(嫌棄的眼神)那你可以回去等電話
面試建議:不要光簡單說 控制反轉、依賴注入,面向切面這些高逼格的詞語,多講下spring裡的BeanFactory及bean生命週期相關的接口 等具體接口能力(學習模仿spring的優秀接口設計能力,我也一直在研究中)
知識準備
spring、spring的IOC、BeanFactory、FactoryBean
BeanFactory
- 是一個工廠類(接口),用於管理Bean的一個工廠。在Spring中,BeanFactory是IOC容器的核心接口,它包含了:實例化、定位、配置對象及創建這些對象之間的依賴。
- 提供了最基本的IOC容器功能。接口定義了IOC容器最基本形式,並且提供了IOC容器所應該遵守的基本服務契約。
- Spring通過BeanFactory來解決bean之間的依賴問題,達到松耦合。在沒有beanFactory前都是手動new來實例化太苦逼了,beanFactory方便bean生命週期進行各種管理
- beanFactory的結構
![面試官:說下Spring的FactoryBean,程序員:我只聽說Bean工廠](http://p2.ttnews.xyz/loading.gif)
- 基本方法的解釋
![面試官:說下Spring的FactoryBean,程序員:我只聽說Bean工廠](http://p2.ttnews.xyz/loading.gif)
- BeanFacotory的子接口
FactoryBean
是一個Bean,區別於普通的Bean,是實現了FactoryBean
場景:代理功能,如對該對象的所有方法做個攔截,日誌等等。
一般實際開發中,會同時實現FactoryBean、InitializingBean兩個接口,一個用來生成代理對象,一個用來返回代理對象。
- XXXFactoryBean implements FactoryBean
- org.springframework.orm.ibatis.SqlMapClientFactoryBean的官方套路例子
代碼案例
- 某業務工廠Bean
- 初始化生成代理對象
- 通過getObject()方法返回代理對象
- isSingleton是true單例
- getObjecType()返回的代理的類型,根據實際業務返回特定類型
總結
- 搞清楚BeanFactory,就搞明白了spring的IOC的核心
- 系統需要實現特定代理功能,spring的FactoryBean提供了這樣的能力
我的其他java技術文章,歡迎一起學習交流
- 【最近更新】
- 【最近更新】
- 【最近更新】
閱讀更多 程序汪汪 的文章