常用的ApplicationContext:
AnnotationConfigApplicationContext
GenericXmlApplicationContext
ClassPathXmlApplicationContext
FileSystemXmlApplicationContext
他们共同继承自AbstractApplicationContext
-
GenericApplicationContext
AnnotationConfigApplicationContext
GenericXmlApplicationContext
共同继承自GenericApplicationContext
其成员DefaultListableBeanFactory
-
AbstractRefreshableApplicationContext
ClassPathXmlApplicationContext
FileSystemXmlApplicationContext
共同继承自AbstractRefreshableApplicationContext
其成员DefaultListableBeanFactory
-
AbstractApplicationContext
GenericApplicationContext与AbstractRefreshableApplicationContext属于两个分支的基础类,
共同继承自AbstractApplicationContext,此类实现了BeanFactory不同在的众多功能,例如:
List<BeanFactoryPostProcessor> beanFactoryPostProcessors
ResourcePatternResolver
MessageSource
ApplicationEventMulticaster
Set<ApplicationListener<?>> applicationListeners
ConfigurableEnvironment
还有
ApplicationContext parent 支持父Context
他们可以完成配置、资源等的加载,还有一些事件、消息、监听、环境配置等的功能。这些都是beanfactory不具有的。
-
DefaultListableBeanFactory分析:
DefaultListableBeanFactory可以说是和ApplicationContext同级的类。
GenericApplicationContext与AbstractRefreshableApplicationContext共同继承ApplicationContext,但他们的成员都是DefaultListableBeanFactory。
DefaultListableBeanFactory的只有一个子类XmlBeanFactory,并且已经废弃使用。
DefaultListableBeanFactory应该重点分析,是bean管理的核心类。
BeanFactory的类继承关系图: