springboot笔记

1 篇文章 0 订阅
1 篇文章 0 订阅

xxApplicationContext 上下文,持有xxBeanFactory 的引用,bean相关操作委托给容器。

xxBeanFactory 真正的容器,

关键词: SmartInitializingSingleton

1.准备

从spring.factory文件中获取ApplicationContextInitializer、与SpringApplicationRunListener并初始化;

new SpringApplicationRunListeners事件发布器,发布starting事件;

新建容器(ConfigurableApplicationContext)。

2.准备容器

1.设置容器ConfigurableApplicationContext的环境、资源加载器、类加载器等

向beanFactory提前注入bean

执行ApplicationContextInitializer来设置ConfigurableApplicationContext

listeners.contextPrepared(context);

2.加载

listeners.contextLoaded(context);

3.刷新容器

spring refresh

1.获取容器beanFactory
2.准备容器:配置bean后置处理器、忽略项等
3.执行beanFactory后置处理器

目的是往beanFactory注册bean的定义(ConfigurationClassPostProcessor 解析@Configuration、@Bean,@Component,@ComponentScan,@Import,@ImportResource等注解,将这些bean的定义注入beanFactory;以及其它功能:配置bean后置处理器、忽略项等)。这些beanFactory后置处理器,有的来自:springBoot读取spring.factory的ApplicationContextInitializer项,这些ApplicationContextInitializer会被执行initialize方法,初始化ConfigurableApplicationContext容器,其中就包含配置新的bean后置处理器;有的来自spring中实现了BeanFactoryPostProcessor接口的bean。

4.配置BeanPostProcessor类型的bean到beanFactory容器
5.配置applicationEventMulticaster事件广播器到beanFactory容器
6.初始化web容器
7.注入监听器,发布arlyApplicationEvents事件

7.1 springboot启动时,配置到springApplication容器的监听器。读取spring.factory文件中的ApplicationListener项,实例化得到

7.2 类型是ApplicationListener类型的bean

8.完成所有剩余bean的注入
9.finishRefresh

清理resource缓存、执行bean(所有实现了Lifecycle接口的)的生命周期方法start()、发布ContextRefreshedEvent事件、清理其它缓存

4.执行ApplicationRunner.class、CommandLineRunner.class类型的bean

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值