Spring ApplicationContext refresh的流程

Spring ApplicationContext refresh的流程,第1张

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

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/918705.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-16
下一篇2022-05-16

发表评论

登录后才能评论

评论列表(0条)

    保存