ApplicationContext 是 Spring IoC 容器的核心接口,它提供了配置、访问和管理 Bean 的功能。ApplicationContext 的启动流程可以细分为以下几个关键步骤,这些步骤主要在 AbstractApplicationContext 类的 refresh() 方法中实现:
1. prepareRefresh() - 准备刷新:
- 设置启动时间戳。
- 设置容器的激活状态。
- 初始化属性源 (property sources),用于解析占位符(例如,
${...})。 - 验证必需的属性(如果有)。
- 创建并保存早期事件监听器集合 (early application listeners).
2. obtainFreshBeanFactory() - 获取 BeanFactory:
- 如果存在旧的
BeanFactory,则销毁其中的 Bean 并关闭旧的BeanFactory。 - 创建新的
BeanFactory(通常是DefaultListableBeanFactory)。 - 设置
BeanFactory的序列化 ID (如果需要)。 - 定制
BeanFactory(例如,设置类加载器、添加后置处理器等)。 - 加载 Bean 定义 (调用
loadBeanDefinitions方法):XmlBeanDefinitionReader: 从 XML 配置文件加载。AnnotatedBeanDefinitionReader: 从注解配置类加载。ClassPathBeanDefinitionScanner: 扫描类路径并加载带有注解的 Bean。
3. prepareBeanFactory(beanFactory) - 准备 BeanFactory:
- 设置
BeanFactory的类加载器。 - 设置表达式解析器 (用于解析 SpEL 表达式)。
- 设置属性编辑器注册器。
- 添加内置的
BeanPostProcessor(例如,ApplicationContextAwareProcessor、ApplicationListenerDetector

最低0.47元/天 解锁文章
1605

被折叠的 条评论
为什么被折叠?



