applicationContext相关加载
创始人
2024-05-30 06:55:25

spring refresh

概述

refresh是一个方法,spring中所有的ApplicationContext容器都需要通过refresh方法初始化;

在这里插入图片描述

处理步骤

其中refresh方法包含12个主要的处理步骤:
在这里插入图片描述

1、第1个步骤做前置准备

2、第2~6步骤创建BeanFactory(ApplicationContext核心功能由BeanFactory完成)

3、第7~12准备ApplicationContext,其中11步创建初始化容器中的单例bean;

1、prepareRefresh

这个过程创建准备Environment对象

Environment对象存储了java和系统的一些键值信息;

最重要的是存储我们自定义配置的application.properties;

总结

  • 作用之一是为后续@value,值注入提供键值

在这里插入图片描述

测试

解析@value注解配置的值

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2、obtainFreshBeanFactory

  • 这一步创建或者获取BeanFactory
  • BeanFactory虽然和ApplicationContext是继承关系,但是一般是配合使用的,ApplicationContext对负责bean创建,依赖注入和初始化仍然是直接调用的BeanFactory的方法;
  • BeanDefinition规定了bean的特征,如单例多例,依赖关系
  • BeanDefinition可以通过xml及配置类获得,也可通过组件扫描获得;

BeanFactory通过BeanDefinition收集信息后创建bean

在这里插入图片描述

测试

我们可以看到beandefinition初始为空;

在这里插入图片描述

我们接着在xml中配置bean

在这里插入图片描述

可以看到beandifinition已经不为空;

在这里插入图片描述

也可通过配置类配置bean

在这里插入图片描述

在这里插入图片描述

也可以看到bean被注入了进来;

在这里插入图片描述

3、prepareBeanFactory

  • 完善BeanFactory
  • 了解谁来解析${ },应用ApplicationContext提供的Environment解析
  • 特殊bean的注入,BeanFactory,ApplicationContext

在这里插入图片描述

4、postProcessBeanFactory

在这里插入图片描述

  • 这一步是空实现,留给子类扩展

  • 模板方法的设计模式

5、invokeBeanFactoryPostProcessors

beanFactory的后处理器,充当BeanFactory扩展点;

可以用来补充修改BeanDefinition;

ConfigurationClasProcessor解析@Configuration @Bean import等补充到bean的map中;

6、registerBeanPostProcessors

加入更多的后处理器;

这一步只是注册,后续步骤才会使用;

7、initMessageSource

实现国际化;

容器中有messageSource,如果没有在map中找到,会自动创建;

8、initApplicationEventmulicaster

事件广播器,发送事件给监听器;

通过ApplicationContext的publishEvent(事件对象)来发布;

9、onRefresh

空实现,留给子类;

springboot中的子类在这准备webserver,即内嵌web容器;

10、RegisterListeners

initApplicationEventmulicaster管理发送监听事件,这里管理接收事件

需要实现ApplicationListerer,重写相关方法;

11、finishBeanFactoryInitialization

  • singletonObject单例池
  • embeddevalueresolves内嵌解析器,解析${ };
  • conversionService做类型转换

12finishRefresh

  • lifecycleProcessor生命周期处理器,控制容器内生命周期的管理;
  • 调用context.start可以触发所有实现lifecycle接口bean的start方法;

总结

在这里插入图片描述

相关内容

热门资讯

海南、广东两大在建核电工程迎来... “五一”假期前后,位于海南、广东两省的华龙一号核电工程迎来重要节点,向并网发电、投入商用迈出关键一步...
AI对服务器CPU总体有效市场... (来源:君实财经)君实财经主要关注逻辑电路、软件、网络广告、必需/可选消费等领域,每日更新记录与基本...
300多亿资本涌入 具身智能从... 《科创板日报》5月5日讯(记者 李佳怡)具身智能产业链融资热起。据《科创板日报》记者不完全数据统计,...
美股异动|“大空头”Micha... 游戏驿站(GME.US)盘初一度跌超4%,最低触及22.85美元。消息面上,《大空头》原型、传奇投资...
日本当局既想给乌克兰递刀 又想... (来源:直新闻) #俄外交部称日本须放弃反俄路线#【日本...