Spring Context

    從Spring框架中咱們知道Context是Bean的舞臺,Context負責生成Bean,以及維護Bean之間的關係。Context容器主要由BeanFactory和ApplicationContext構成,ApplicationContext也是繼承自BeanFactory,因此說BeanFactory是根容器,其餘的類都是由這兩個類派生而來。

關鍵類結構和實現:web

  1. BeanFactory
    BeanFactory結構如圖所示:

    從上圖能夠看出,BeanFactory有三個子類:HierarchicalBeanFactory, ListableBeanFactory和AutowireCapableBeanFactory。
    1) HierarchicalBeanFactory定義的Bean是有層繼承關係的。
    2) ListableBeanFactory定義的Bean是可列表的。
    3) AutowireCapableBeanFactory定義的Bean是能夠自動裝配的。

    默認實現的是DefaultListableBeanFactory,DefaultListableBeanFactory結構如圖所示:

    從上圖能夠看出,DefaultListableBeanFactory繼承了HierarchicalBeanFactory, ListableBeanFactory和AutowireCapableBeanFactory,擁有三者的全部功能。DefaultListableBeanFactory還實現了BeanDefinitionRegistry接口,使得DefaultListableBeanFactory擁有註冊BeanDefinition的功能。
     
  2. ApplicationContext
    ApplicationContext結構如圖所示:

    從上圖能夠看出,ApplicationContext有兩個子類分別是ConfigurableApplicationContext和WebApplicationContext。
    1) ConfigurableApplicationContext是可修改的,能夠動態添加和更新Context,最長用到的子類是AbstractRefreshableApplicationContext。
    2) WebApplicationContext是爲Web開發準備的,它能夠訪問到ServletContext。
    3) ClassPathXmlApplicationContext實現了ConfigurableApplicationContext的全部方法,通常用於讀取ClassPath下的xml文件建立容器。
    4) FileSystemXmlApplicationContext實現了ConfigurableApplicationContext的全部方法,通常用於讀取FileSystem下的xml文件建立容器。
    5) XmlWebApplicationContext實現了WebApplicationContext的方法,通常用於web開發建立web容器。

    ClassPathXmlApplicationContext結構如圖所示:


    FileSystemXmlApplicationContext結構如圖所示:


    XmlWebApplicationContext結構如圖所示:
    從ClassPathXmlApplicationContext, FileSystemXmlApplicationContext和XmlWebApplicationContext的結構中咱們能夠看出他們都繼承了AbstractRefreshableApplicationContext,AbstractRefreshableApplicationContext組合了DefaultListableBeanFactory,而DefaultListableBeanFactory實現了HierarchicalBeanFactory, ListableBeanFactory和AutowireCapableBeanFactory,真正工做的實際上是DefaultListableBeanFactory。AbstractRefreshableApplicationContext經過實現AbstractApplicationContext的getBeanFactory()方法返回DefaultListableBeanFactory,從而將建立Bean的工做委託給DefaultListableBeanFactory。
相關文章
相關標籤/搜索