标签:容器 springboot 后置 beanFactory spring 笔记 bean 处理器
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
标签:容器,springboot,后置,beanFactory,spring,笔记,bean,处理器 来源: https://blog.csdn.net/qq_38743530/article/details/122730356
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。