天天看點

spring IoC概念了解

1.IoC容器是用來管理對象依賴關系的,對IoC容器的使用者來說,我們經常接觸的BeanFactory和ApplicationContext都可以看成是IoC容器的具體表現形式。如果深入spring看,IoC容器代表一系列功能各異的容器産品,隻是容器的大小和功能有各自的特點。

2.就像商品需要有功能說明書一樣,同樣,作為IoC容器,也需要為它的具體實作指定基本的功能規範,這個功能規範設計表現為接口類BeanFactory,它展現了spring為提供給使用者使用的IoC容器所設定的最基本功能規範,是以BeanFactory接口在繼承體系中是最基本的接口類。

3.在這些spring提供的基本IoC容器的接口定義和實作基礎上,spring通過定義BeanDefinition來管理基于spring的應用中的各種對象以及它們之間的依賴關系,這些BeanDefinition就像是容器裡裝的水,有了這些水,容器才能發揮作用。依賴反轉功能都是圍繞對這個BeanDefinition的處理上完成的。

4.在spring中,所有Bean都是由BeanFactory來管理的,FactoryBean是一個能産生或者修飾對象生成的工廠Bean。

5.XmlBeanFactory是一個可以讀取XML檔案方式定義的BeanDefinition的IoC容器,構造XmlBeanFactory時,需要指定BeanDefinition的資訊來源,而這個資訊來源需要封裝成spring中的Resource類來給出。Resource是用來封裝IO操作的類。可以用ClassPathResource來構造Resource,然後作為參數傳遞給XmlBeanFactory。程式設計時如下使用建立IoC容器:

XmlBeanFactory factory=new XmlBeanFactory(new classPathResource("applicationContext.xml"));

ApplicationContext是一個進階形态意義的IoC容器,與簡單的BeanFactory相比,對它的使用是一種面向架構的使用風格,是以一般建議在開發應用時使用ApplicationContext作為IoC容器的基本形式。

6.IoC容器的初始化包括BeanDefinition的Resource定位,載入和注冊這三個基本的過程。BeanDefinition的資源定位由ResourceLoader通過統一的Resource接口來完成,比如在類路徑中的Bean定位由ClassPathResource來定位。這個過程類似于容器尋找資料的過程,就像用水桶裝水得先找到水源。依賴注入的過程是使用者第一次向IoC容器索要Bean時觸發的。也可以在BeanDefinition資訊中通過控制lazy-init屬性來讓容器完成對Bean的預執行個體化。