1. 程式人生 > >Spring-IOC源碼解讀1-整體設計

Spring-IOC源碼解讀1-整體設計

關系 nfa 數據結構 分享 整體 ltr 對象 eve ica

1. SpringIOC提供了一個基本的javabean容器,通過IOC模式管理依賴關系,並通過依賴註入和AOP增強了為javabean這樣的pojo對象賦予事務管理,生命周期管理等基本功能。
2. SpringIOC容器中註入方式有setter註入,構造器註入,接口註入,其中setter註入和構造器註入是主要註入方式
3. 兩個主要的容器系列:一個是實現BeanFactory接口的簡單容器系列,另一個是Application應用上下文系列。

技術分享

4. 在Spring提供的基本IOC容器的接口定義和實現的基礎上,Spring通過定義BeanDefinition來管理基於Spring的應用中各種對象及他們之間的相互依賴關系。BeanDefinition抽象了我們對bean的定義,是讓容器起作用的主要數據類型。對IOC容器來說,BeanDefinition就是依賴反轉模式中管理的對象依賴關系的數據對象,也是容器實現依賴反轉功能的核心數據結構,依賴反轉功能都是圍繞對這個Beandefinition的處理來完成的。

5. XmlBeanFactory的設計原理:XmlBeanFactory繼承自DefaultListableBeanFactory(在Spring中實際是作為一個默認的功能完善的IOC容器來使用的,後面可以看到許多容器的實現都是擴展自此類)並增加了新的功能,使他可以讀取以xml文件方式定義的BeanDefininition.

技術分享

6. XmlBeanFactory使用示例:

public void testXmlBeanFactory() {
        Resource res = new ClassPathResource("spring-beans.xml");
        BeanFactory fac = new XmlBeanFactory(res);
        Person p = fac.getBean("person", Person.class);
        System.out.println(p);
    }

7. ApplicationContext的設計原理: ApplicationContext是一個高級形態意義的IOC容器,他除了提供基本IOC容器的功能之外,還提供了許多附加服務,例如:

  • 支持不同的信息源:繼承了MessageResource接口
  • 訪問資源:繼承了DefaultResourceLoader及其子類,故可以支持 ResourceLoader。
  • 支持應用事件:繼承了ApplicationEventPublisher.

技術分享

Spring-IOC源碼解讀1-整體設計