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。
相关文章
相关标签/搜索