当前位置: 首页>开发笔记>正文

spring BeanFactory 家族介紹

spring BeanFactory 家族介紹

/*** BeanFactory作為最原始同時也最重要的Ioc容器,它主要的功能是為依賴注入 (DI) 提供支持, BeanFactory 和相關的接口,比如,BeanFactoryAware、 * DisposableBean、InitializingBean,仍舊保留在 Spring 中,主要目的是向后兼容已經存在的和那些 Spring 整合在一起的第三方框架。在 Spring 中* ,有大量對 BeanFactory 接口的實現。其中,最常被使用的是 XmlBeanFactory 類。這個容器從一個 XML 文件中讀取配置元數據,由這些元數據來生成一* 個被配置化的系統或者應用。在資源寶貴的移動設備或者基于applet的應用當中, BeanFactory 會被優先選擇。否則,一般使用的是 ApplicationContext* * 這里定義的只是一系列的接口方法,通過這一系列的BeanFactory接口,可以使用不同的Bean的檢索方法很方便地從Ioc容器中得到需要的Bean,從而忽略具體* 的Ioc容器的實現,從這個角度上看,這些檢索方法代表的是最為基本的容器入口。** @author Rod Johnson* @author Juergen Hoeller* @author Chris Beams* @since 13 April 2001*/
public interface BeanFactory {/*** 轉定義符"&" 用來引用實例,或把它和工廠產生的Bean區分開,就是說,如果一個FactoryBean的名字為a,那么,&a會得到那個Factory** FactoryBean和BeanFactory 是在Spring中使用最為頻繁的類,它們在拼寫上很相似。一個是Factory,也就是Ioc容器或對象工廠;一個* 是Bean。在Spring中,所有的Bean都是由BeanFactory(也就是Ioc容器)來進行管理的。但對FactoryBean而言,這個Bean不是簡單的Be* an,而是一個能產生或者修飾對象生成的工廠Bean,它的實現與設計模式中的工廠模式和修飾器模式類似。*/String FACTORY_BEAN_PREFIX = "&";/*** 五個不同形式的getBean方法,獲取實例* @param name 檢索所用的Bean名* @return Object(<T> T) 實例對象* @throws BeansException 如果Bean不能取得*/Object getBean(String name) throws BeansException;<T> T getBean(String name, Class<T> requiredType) throws BeansException;<T> T getBean(Class<T> requiredType) throws BeansException;Object getBean(String name, Object... args) throws BeansException;<T> T getBean(Class<T> requiredType, Object... args) throws BeansException;/*** 讓用戶判斷容器是否含有指定名字的Bean.* @param name 搜索所用的Bean名* @return boolean 是否包含其中*/boolean containsBean(String name);/*** 查詢指定名字的Bean是否是Singleton類型的Bean.* 對于Singleton屬性,可以在BeanDefinition指定.* @param name 搜索所用的Bean名* @return boolean 是否包是Singleton* @throws NoSuchBeanDefinitionException 沒有找到Bean*/boolean isSingleton(String name) throws NoSuchBeanDefinitionException;/*** 查詢指定名字的Bean是否是Prototype類型的。* 與Singleton屬性一樣,可以在BeanDefinition指定.* @param name 搜索所用的Bean名* @return boolean 是否包是Prototype* @throws NoSuchBeanDefinitionException 沒有找到Bean*/boolean isPrototype(String name) throws NoSuchBeanDefinitionException;/*** 查詢指定了名字的Bean的Class類型是否是特定的Class類型.* @param name 搜索所用的Bean名* @param typeToMatch 匹配類型* @return boolean 是否是特定類型* @throws NoSuchBeanDefinitionException 沒有找到Bean*/boolean isTypeMatch(String name, ResolvableType typeToMatch) throws NoSuchBeanDefinitionException;boolean isTypeMatch(String name, Class<?> typeToMatch) throws NoSuchBeanDefinitionException;/*** 查詢指定名字的Bean的Class類型.* @param name 搜索所用的Bean名* @return 指定的Bean或者null(沒有找到合適的Bean)* @throws NoSuchBeanDefinitionException 沒有找到Bean*/Class<?> getType(String name) throws NoSuchBeanDefinitionException;/*** 查詢指定了名字的Bean的所有別名,這些都是在BeanDefinition中定義的* @param name 搜索所用的Bean名* @return 指定名字的Bean的所有別名 或者一個空的數組*/String[] getAliases(String name);
}


圖片為BeanFactory整個家族的uml圖,比較亂,后面會將其分解




https://www.zydui.com/afe12V28CDQ9VAV4A.html
>

相关文章:

  • IQVIA醫藥咨詢隨筆雜談
  • 爬取英雄聯盟英雄皮膚數據
  • 英雄聯盟 連接服務器失敗 請檢查您的網絡 是否啟用修復程序進行修復,英雄聯盟玩不了,提示未知的directx錯誤...
  • 三位千萬富翁告訴你:錢是怎么賺來的
  • 芳香之城傳奇的美麗神話故事
  • Solid Converter PDF注冊碼
  • 修改linux下面的字符集
  • 30個不可思議的好玩又實用的HTML5移動應用
  • 安卓新出病毒幽靈推,回顧android歷史上的那些吸費病毒
  • 游戲編程技術貼:AI設計的若干規則闡述
  • mac啟動自動運行程序_什么啟動了,為什么在我的Mac上運行?
  • 什么是UserEventAgent,它為什么在Mac上運行?
  • 蔚來汽車新財報超預期,短期或難盈利互聯網造車行不通嗎?
  • 車行的進貨問題
  • spring BeanFactory 家族介紹
  • 地址家族/名字解析
  • VS中怎么調出資源方案管理器
  • 告別低效工作,幫你重新找回工作的掌控感
  • 從Mac連接Windows共享打印機(1)
  • c4d流體插件_Cinema 4D 流體模擬插件 TurbulenceFD C4D v1.0 Build 1425 Win64
  • 經典生活總結語錄(搞笑欣賞)
  • 項目打包打的是什么包_早安打工人是什么梗,朋友圈打工人文案語錄表情包!...
  • 前端學習從入門到高級全程記錄之25(webapi)
  • 中職計算機應用普測考試試題及答案,2017職稱計算機考試WPS_Office檢測練習及答案9...
  • 微型計算機的主板又稱為,供電設計比7999元的主板還猛,ROG M11A主板首次亮相
  • webStorm使用斷點
  • 逆風翻盤?順豐大股東聯手本來集團上演O2O+B2C生鮮大戲
  • 三國志戰略版:Daniel_“坦克兵種”象兵分析
  • RISK-V品牌的中國化歷程(下)
  • 網游找call通殺方法之另辟蹊徑