Spring ApplicationContext refresh的流程

ApplicationContext refresh的流程

12个步骤:在这里插入图片描述

1.prepareRefresh

1.这一步创建和准备了Environment对象

初始化键值信息。

作用之一是为后续@Value,值注入提供。

2.obtainFreshBeanFactory

1.BeanFactory的作用是负责bean的创建、依赖注入和初始化。

2.BeanDefinition作为bean的设计蓝图,规定了bean的特征。

BeanDefinition中的bean信息可以从xml、配置类或扫描获取。

3.prepareBeanFactory

1.StandardBeanExpressionResolver来解析SpEL

2.ResourceEditorRegistrar会注释类型转换器,并应用ApplicationContext 提供的Environment完成${}解析

3.特殊bean指beanFactory 以及ApplicationContext,通过registerResolvableDependency来注册它们

4.postProcessBeanFactory

一般Web环境的ApplicationContext都要利用它注册新的Scope,完善Web 下的BeanFactory。体现的是模板方法设计模式

5.invokeBeanFactoryPostProcessors

1.beanFactory后处理器,充当beanFactory 的扩展点,可以用来补充或修改BeanDefinition

2.ConfigurationClassPostProcessor-解析@Configuration、@Bean、@lmport、@PropertySource等

6.registerBeanPostProcessors

1.bean后处理器,充当bean的扩展点,可以工作在 bean 的实例化、依赖注入、初始化阶段

2.AutowiredAnnotationBeanPostProcessor功能有:解析@Autowired,@value注解

3.CommonAnnotationBeanPostProcessor功能有∶解析@Resource,@PostConstruct,@preDestroy

4.AnnotationAwareAspectJAutoProxyCreator功能有:为符合切点的目标bean自动创建代理

7.initMessageSource

实现国际化

8. initApplicationEventMulticaster

用来发布事件给监听器

9.onRefresh

空实现,SpringBoot中的子类可以在这里准备WebServer,即内嵌 web容器

10.registerListeners

用来接收事件

11.finishBeanFactorylnitialization

1.conversionService也是一套转换机制,作为对 PropertyEditor的补充

2.内嵌值解析器用来解析@Value 中的${},借用的是Environment的功能

3.单例池用来缓存所有单例对象,对象的创建都分三个阶段,每一阶段都有不同的bean后处理器参与进来,扩展功能

12.finishRefresh

用来控制容器内需要生命周期管理的bean
在这里插入图片描述
在这里插入图片描述


版权声明:本文为weixin_42338191原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。