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

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

上篇文章主要介绍了finishBeanFactoryInitialization:

创建bean会调用很多后置处理器,每个后置处理器完成的功能都不同,非常重要。

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


十一、finishBeanFactoryInitialization


上篇文章的方法里还剩下最后一步:

通过getBane创建bean完成之后,会判断所有的bean是不是这个接口SmartInitializaingSingleton接口。

如果是则执行此接口里面的方法afterSingletonsInstantiated()方法。

完成beanFactory的初始化创建工作,IOC容器创建完毕。

image.png


十二、finishRefresh


clearResourceCaches()。

initLifecycleProcessor();初始化和生命周期有关的后置处理器;默认从容器中找是否有lifecycleProcessor的组件,没有就创建,加入到容器中(所有的组件都会加入到容器中)。

允许写一个LifecycleProcessor的实现类,可以在beanFactory的onRefresh()和onClose ()方法拦截。

拿到前面加入容器的生命周期处理器,getLifecycProcessor()回调onRefresh()方法。

PublishEvent发布容器刷新完成事件。

最后一步registerApplicationContext暴露bean。

image.png

至此,我们整个ioc容器刷新全部完成。


refresh总结:

spring容器启动时候,会保存bean定义的信息

扫描xml文件

@Bean也可以定义bean,或者注解@CompomentScan扫描下指定包目录下的(@Service@Repository@Compoment@Controller)

容器会创建bean,通过getBean方法创建,创建好保存在容器中。

统一创建剩下所有bean,finishBeanFactoryInitialization()

后置处理器:

每个bean创建前后,都有后置处理增强bean。

beanPostProcessBeforeInstantiation可以获取bean(可以保证单实例)

annotationAwareAspectJautoProxyCreator来做aop功能等。

事件监听

ApplicationListener:事件监听。

事件派发(多播)器是ApllicationEventMulticaster


相关文章
|
3天前
|
运维 Kubernetes Cloud Native
云原生入门:Kubernetes和容器化的未来
【10月更文挑战第23天】本文将带你走进云原生的世界,探索Kubernetes如何成为现代软件部署的心脏。我们将一起揭开容器化技术的神秘面纱,了解它如何改变软件开发和运维的方式。通过实际的代码示例,你将看到理论与实践的结合,感受到云原生技术带来的革命性影响。无论你是初学者还是有经验的开发者,这篇文章都将为你开启一段新的旅程。让我们一起踏上这段探索之旅,解锁云原生技术的力量吧!
|
9天前
|
Ubuntu Shell 开发者
Docker入门:轻松开始容器化之旅
【10月更文挑战第17天】Docker 是一种开源的应用容器引擎,它让开发者能够“一次构建、到处运行”。Docker 通过容器化技术将应用程序及其依赖打包在一起,从而确保应用在任何环境中都能一致地运行。本文将为新手用户提供一个全面的Docker入门指南,包括基本概念、优势、安装配置以及如何创建和管理容器。
32 2
|
16天前
|
存储 运维 云计算
探索Docker容器化:从入门到实践
在这个快速发展的云计算时代,Docker容器化技术正在改变应用的开发、部署和管理方式。本文旨在为初学者提供一个关于Docker的全面入门指南,并通过实践案例展示Docker在实际开发中的应用。我们将一起了解Docker的核心概念、基本操作、网络和存储,以及如何构建和部署一个简单的Web应用。无论你是开发者还是运维人员,本文都会帮助你快速掌握Docker的核心技能。
|
18天前
|
Java API Spring
springboot学习七:Spring Boot2.x 拦截器基础入门&实战项目场景实现
这篇文章是关于Spring Boot 2.x中拦截器的入门教程和实战项目场景实现的详细指南。
15 0
springboot学习七:Spring Boot2.x 拦截器基础入门&实战项目场景实现
|
18天前
|
Java API Spring
springboot学习六:Spring Boot2.x 过滤器基础入门&实战项目场景实现
这篇文章是关于Spring Boot 2.x中过滤器的基础知识和实战项目应用的教程。
17 0
springboot学习六:Spring Boot2.x 过滤器基础入门&实战项目场景实现
|
28天前
|
存储 编译器 C++
【C++篇】揭开 C++ STL list 容器的神秘面纱:从底层设计到高效应用的全景解析(附源码)
【C++篇】揭开 C++ STL list 容器的神秘面纱:从底层设计到高效应用的全景解析(附源码)
44 2
|
1月前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker与Kubernetes入门
【9月更文挑战第30天】在云计算的浪潮中,云原生技术正以前所未有的速度重塑着软件开发和运维领域。本文将通过深入浅出的方式,带你了解云原生的核心组件——Docker容器和Kubernetes集群,并探索它们如何助力现代应用的构建、部署和管理。从Docker的基本命令到Kubernetes的资源调度,我们将一起开启云原生技术的奇妙之旅。
|
2月前
|
运维 Cloud Native Docker
云原生技术入门:Docker容器化实战
【9月更文挑战第20天】本文将引导你走进云原生技术的世界,通过Docker容器化技术的实战演练,深入理解其背后的原理和应用。我们将一起探索如何在云平台上利用Docker简化部署、扩展和管理应用程序的过程,并揭示这一技术如何改变现代软件的开发和运维模式。
|
14天前
|
XML Java 数据格式
Spring IOC容器的深度解析及实战应用
【10月更文挑战第14天】在软件工程中,随着系统规模的扩大,对象间的依赖关系变得越来越复杂,这导致了系统的高耦合度,增加了开发和维护的难度。为解决这一问题,Michael Mattson在1996年提出了IOC(Inversion of Control,控制反转)理论,旨在降低对象间的耦合度,提高系统的灵活性和可维护性。Spring框架正是基于这一理论,通过IOC容器实现了对象间的依赖注入和生命周期管理。
43 0
|
2月前
|
Kubernetes 监控 Cloud Native
云原生入门:从传统应用到容器化部署的旅程
【9月更文挑战第19天】在数字化浪潮中,企业正迅速将目光投向云原生技术,以实现更快的应用开发和更灵活的资源管理。本文将通过一个简单示例引导读者理解如何将传统应用转变为云原生应用,并部署至云端。我们将探索容器化技术的基础,以及它如何帮助企业解锁现代软件交付的速度和效率。准备好让你的应用乘上云原生的快车了吗?让我们开始这段令人兴奋的旅程吧!

热门文章

最新文章