Ioc容器refresh总结(1)--- Spring源码从入门到精通(三十一)

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器镜像服务 ACR,镜像仓库100个 不限时长
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: Ioc容器refresh总结(1)--- Spring源码从入门到精通(三十一)

上篇文章主要介绍了EventListener注解的使用及源码分析:

注解是由EventListenerMethodProcessor后置处理器里的afterSingletonsInstantiated方法,而这个方法顾名思义,在单实例对象初始化之触发的,全部都在ioc容器refresh方法里面。

@EventListener--- Spring源码从入门到精通(三十)


这篇文章主要介绍refresh方法:


一、prepareRefresh()


initPropertySources刷新前的预处理;子类自定义个性化的属性设置方法。

getEnvironment().validateRequiredPropertites()属性效验是否合法。

earlyApplicationEvent事件;保存容器中早期一些事件。

image.png


image.png


二、obtainFreshBeanFactory()获取beanFactory


1、refreshBeanFactory刷新【也就是创建】beanFactory,A、先创建一个beanFactory对象;B、设置序列化id。

2、getBeanFactory返回刚刚由GenericApplicationContext构造方法创建的beanFactory。

3、返回默认的DefaultListableBeanFactory。

image.png

image.png

获取beanFactory之后怎么办呢?


三、prepareBeanFactory预处理beanFactory


1、设置类加载器,表达式解析器等

2、添加beanPostProcessor【ApplicationContextAwareProcessor】

3、通过ignoreDependencyInterface设置忽略自动装配的依赖接口EnviromentAware,EmbeddedValueResolverAware等等。

4、 通过registerResolvableDependency设置自动注入组件beanFactory,    ResourceLoader,AplicationEventPublisher,ApplicationContext。

5、添加另一个beanPostProcessor【AplplicationListenerDetector】

6、添加编译时的AspectJ;

7、给beanFactory中注册一些能用的组件;enviroment【ConfigurableEnviroment】,systemProperties【返回Map】,systemEnviroment【返回Map】

image.png


四、postProcessorBeanFactory


作用:beanFactory准备工作完成后的后置处理工作

  1. 子类可以重写这个方法来给beanFactory创建完成预准备完成之后做进一步设置。


image.png


以上就是BeanFactory的创建及预准备工作。

相关文章
|
4天前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker和Kubernetes入门
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性和效率的关键。本篇文章将引导读者了解如何利用Docker进行容器化打包及部署,以及Kubernetes集群管理的基础操作,帮助初学者快速入门云原生的世界。通过实际案例分析,我们将深入探讨这些技术在现代IT架构中的应用与影响。
13 2
|
18天前
|
数据采集 监控 前端开发
二级公立医院绩效考核系统源码,B/S架构,前后端分别基于Spring Boot和Avue框架
医院绩效管理系统通过与HIS系统的无缝对接,实现数据网络化采集、评价结果透明化管理及奖金分配自动化生成。系统涵盖科室和个人绩效考核、医疗质量考核、数据采集、绩效工资核算、收支核算、工作量统计、单项奖惩等功能,提升绩效评估的全面性、准确性和公正性。技术栈采用B/S架构,前后端分别基于Spring Boot和Avue框架。
|
1天前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
10 2
|
7天前
|
前端开发 Java 开发者
Spring生态学习路径与源码深度探讨
【11月更文挑战第13天】Spring框架作为Java企业级开发中的核心框架,其丰富的生态系统和强大的功能吸引了无数开发者的关注。学习Spring生态不仅仅是掌握Spring Framework本身,更需要深入理解其周边组件和工具,以及源码的底层实现逻辑。本文将从Spring生态的学习路径入手,详细探讨如何系统地学习Spring,并深入解析各个重点的底层实现逻辑。
28 9
|
6天前
|
Cloud Native 持续交付 Docker
Docker容器化技术:从入门到实践
Docker容器化技术:从入门到实践
|
12天前
|
Cloud Native 持续交付 云计算
云原生入门指南:从容器到微服务
【10月更文挑战第28天】在数字化转型的浪潮中,云原生技术成为推动现代软件开发的关键力量。本篇文章将带你了解云原生的基本概念,探索它如何通过容器化、微服务架构以及持续集成和持续部署(CI/CD)的实践来提升应用的可伸缩性、灵活性和可靠性。你将学习到如何利用这些技术构建和部署在云端高效运行的应用,并理解它们对DevOps文化的贡献。
33 2
|
17天前
|
运维 Kubernetes Cloud Native
云原生入门:Kubernetes和容器化的未来
【10月更文挑战第23天】本文将带你走进云原生的世界,探索Kubernetes如何成为现代软件部署的心脏。我们将一起揭开容器化技术的神秘面纱,了解它如何改变软件开发和运维的方式。通过实际的代码示例,你将看到理论与实践的结合,感受到云原生技术带来的革命性影响。无论你是初学者还是有经验的开发者,这篇文章都将为你开启一段新的旅程。让我们一起踏上这段探索之旅,解锁云原生技术的力量吧!
|
24天前
|
Ubuntu Shell 开发者
Docker入门:轻松开始容器化之旅
【10月更文挑战第17天】Docker 是一种开源的应用容器引擎,它让开发者能够“一次构建、到处运行”。Docker 通过容器化技术将应用程序及其依赖打包在一起,从而确保应用在任何环境中都能一致地运行。本文将为新手用户提供一个全面的Docker入门指南,包括基本概念、优势、安装配置以及如何创建和管理容器。
43 2
|
30天前
|
存储 运维 云计算
探索Docker容器化:从入门到实践
在这个快速发展的云计算时代,Docker容器化技术正在改变应用的开发、部署和管理方式。本文旨在为初学者提供一个关于Docker的全面入门指南,并通过实践案例展示Docker在实际开发中的应用。我们将一起了解Docker的核心概念、基本操作、网络和存储,以及如何构建和部署一个简单的Web应用。无论你是开发者还是运维人员,本文都会帮助你快速掌握Docker的核心技能。
|
1月前
|
Java Spring
Spring底层架构源码解析(三)
Spring底层架构源码解析(三)
104 5