javascript
Spring IoC容器总结(未完)
在面向對象系統中,對象封裝了數據和對數據的處理,對象的依賴關系常常體現在對數據和方法的依賴上。這些依賴關系可以通過把對象的依賴注入交給框架或IOC容器來完成,這種從具體對象手中交出控制的做法是非常有價值的,它可以在解耦代碼的同時提高代碼的可測試性。
在Spring中,IoC容器是實現這個模式的載體,它可以在對象生成或初始化時直接將數據注入到對象中,也可以通過將對象引用注入到對象數據域中的方式來注入對方法調用的依賴。setter注入和構造器注入是主要的注入方式。
IoC容器系列的設計與實現:BeanFactory和ApplicationContext
1、從接口BeanFactory到HierarchicalBeanFactory,再到ConfigurableBeanFactory,是一個主要的BeanFactory設計路徑。這個接口定義中,包括了getBean()這樣的IOC容器的基本方法,通過這個方法可以從容器中取得Bean。ConfigurableBeanFactory接口中,主要定義了一些對BeanFactory的配置功能,比如通過setParentBeanFactory()設置雙親IoC容器,通過addBeanPostProcessor配置Bean后置處理等等。
2、以ApplicationContext應用上下文為核心的接口設計,主要接口設計有,從BeanFactory到ListableBeanFactory,再到ApplicationContext,再到我們常用的WebApplicationContext或者ConfigurableApplicationContext接口。我們常用的應用上下文基本上都是ConfigurableApplicationConntext或者WebApplicationContext的實現。
BeanFactory接口設計了getBean方法,這個方法是使用IoC容器API的主要方法,通過這個方法,可以取得IoC容器中管理的Bean。如果需要在獲取Bean時對Bean進行類型檢查,則可用帶參數的方法。Object getBean(String name,Class requiredType);
接口清單:
那么Spring中XML的讀取功能是怎樣實現的呢?
構造XmlBeanFactory這個IoC容器時,需要指定BeanDefinition的信息來源,而這個信息來源需要封裝成Spring中的Resource類來給出。Resource類是Spring用來封裝I/O操作的類。
IoC容器的初始化過程
? ? ? IoC的啟動包括BeanDefinition的Resource定位、注入和注冊三個基本過程。
第一個過程是Resource定位過程。這個Resource定位指的是BeanDefinition的資源定位,它由ResourceLoader通過統一的Resource接口來完成。
第二個過程是BeanDefinition的載入。這個載入過程是把用戶定義好的Bean表示成IoC容器內部的數據結構,而這個容器內部的數據結構就是BeanDefinition。
第三個過程是向IoC容器注冊這些BeanDefinition的過程。在IoC容器內部將BeanDefinition注入到一個HashMap中去,IoC容器就是通過這個HashMap來持有這些BeanDefinition數據的。
Spring IoC的設計中,Bean定義的載入和依賴注入是兩個獨立的過程。依賴注入一般發生在應用第一次通過getBean向容器索取Bean的時候。但有個例外,就像我們向某個Bean設置了lazyinit屬性,那么這個Bean的依賴注入在IoC容器初始化時就預先完成了,而不需要等到整個初始化完成以后,第一次使用getBean時才會觸發。
轉載于:https://www.cnblogs.com/yangsy0915/p/5918290.html
總結
以上是生活随笔為你收集整理的Spring IoC容器总结(未完)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: scanf和gets的差别
- 下一篇: Gym 101102C---Bored