javascript
Spring IOC实现原理
一、IOC 容器:最主要是完成了完成對象的創建和依賴的管理注入等等。
??所謂控制反轉,就是把原先我們代碼里面需要實現的對象創建、依賴的代碼,反轉給容器來幫忙實現。那么必然的我們需要創建一個容器,同時需要一種描述來讓容器知道需要創建的對象與對象的關系。這個描述最具體表現就是我們可配置的文件。?
? ?對象和對象關系怎么表示?
? ?可以用?xml?,?properties?文件等語義化配置文件表示。?
? ?描述對象關系的文件存放在哪里?
? ?可能是 classpath , filesystem ,或者是 URL 網絡資源, servletContext 等。
? ?有了配置文件,還需要對配置文件解析。
? ?不同的配置文件對對象的描述不一樣,如標準的,自定義聲明式的,如何統一??在內部需要有一個統一的關于對象的定義,所有外部的描述都必須轉化成統一的描述定義。
? ?如何對不同的配置文件進行解析?需要對不同的配置文件語法,采用不同的解析器。
二、IOC體系結構
(1)?BeanFactory
??Spring?Bean的創建是典型的工廠模式,這一系列的Bean工廠,也即IOC容器為開發者管理對象間的依賴關系提供了很多便利和基礎服務,在Spring中有許多的IOC容器的實現供用戶選擇和使用,其相互關系如下:?
? ?其中BeanFactory作為最頂層的一個接口類,它定義了IOC容器的基本功能規范,BeanFactory?有三個子類:ListableBeanFactory、HierarchicalBeanFactory?和AutowireCapableBeanFactory。但是從上圖中我們可以發現最終的默認實現類是?DefaultListableBeanFactory,他實現了所有的接口。那為何要定義這么多層次的接口呢?查閱這些接口的源碼和說明發現,每個接口都有他使用的場合,它主要是為了區分在?Spring?內部在操作過程中對象的傳遞和轉化過程中,對對象的數據訪問所做的限制。例如?ListableBeanFactory?接口表示這些?Bean?是可列表的。HierarchicalBeanFactory?表示的是這些?Bean?是有繼承關系的,也就是每個Bean?有可能有父?Bean。AutowireCapableBeanFactory?接口定義?Bean?的自動裝配規則。這四個接口共同定義了?Bean?的集合、Bean?之間的關系、以及?Bean?行為.最基本的IOC容器接口BeanFactory。
public?interface?BeanFactory?{????
? ? ??
? ? ? //對FactoryBean的轉義定義,因為如果使用bean的名字檢索FactoryBean得到的對象是工廠生成的對象,????
? ? ? //如果需要得到工廠本身,需要轉義???????????
? ? ? String?FACTORY_BEAN_PREFIX?=?"&";?
? ? ? ? ?
? ? ? //根據bean的名字,獲取在IOC容器中得到bean實例????
? ? ? Object?getBean(String?name)?throws?BeansException;????
? ??
? ? ?//根據bean的名字和Class類型來得到bean實例,增加了類型安全驗證機制。????
? ? ? Object?getBean(String?name,?Class?requiredType)?throws?BeansException;????
? ? ?
? ? ?//提供對bean的檢索,看看是否在IOC容器有這個名字的bean????
? ? ? boolean?containsBean(String?name);????
? ? ?
? ? ?//根據bean名字得到bean實例,并同時判斷這個bean是不是單例????
? ? ?boolean?isSingleton(String?name)?throws?NoSuchBeanDefinitionException;????
? ? ?
? ? ?//得到bean實例的Class類型????
? ? ?Class?getType(String?name)?throws?NoSuchBeanDefinitionException;????
? ? ?
? ? ?//得到bean的別名,如果根據別名檢索,那么其原名也會被檢索出來????
? ? String[]?getAliases(String?name);????
? ? ?
?}
http://www.cnblogs.com/ITtangtang/p/3978349.html
轉載于:https://blog.51cto.com/13010541/1935188
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的Spring IOC实现原理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 20145209 实验三 《敏捷开发与X
- 下一篇: JS实现间歇性滚动