相关文章推荐
贪玩的野马  ·  ASP.NET Core 的 Razor ...·  4 月前    · 
乐观的火锅  ·  Determine if page is ...·  1 年前    · 


常用的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管理的核心类。


Spring ApplicationContext 和BeanFactory源码分析学习_基础类


BeanFactory的类继承关系图:

Spring ApplicationContext 和BeanFactory源码分析学习_类继承_02

Spring ApplicationContext 和BeanFactory源码分析学习_基础类_03

Spring ApplicationContext 和BeanFactory源码分析学习_源码分析_04

Spring ApplicationContext 和BeanFactory源码分析学习_基础类_05