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

本文涉及的产品
容器镜像服务 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


相关文章
|
6天前
|
小程序 数据可视化 Java
Java+后端Spring boot 开发的全套UWB定位方案,0.1米高精度定位系统源码
UWB定位系统由硬件定位设备、定位引擎和应用软件组成。该定位系统应用软件支持PC端和移动端访问,并提供位置实时显示、历史轨迹回放、人员考勤、电子围栏、行为分析、智能巡检等功能。定位精度高达10cm,同时具备高动态、高容量、低功耗的优点。应用场景包括:隧道、化工、工厂、煤矿、工地、电厂、养老、展馆、整车、机房、机场等。
31 8
|
1天前
|
XML Java 数据格式
Spring--两大核心之一--IOC
Spring--两大核心之一--IOC
|
2天前
|
监控 Java API
【监控】spring actuator源码速读
【监控】spring actuator源码速读
6 1
|
2天前
|
监控 Java 关系型数据库
java版MES系统源码,后端采用 Spring Boot 多模块架构
MES系统采用Vue3的vue-element-plus-admin为后台,Spring Boot多模块架构,支持MySQL、Oracle等数据库,具备SaaS多租户功能。核心功能包括车间计划排程、工艺流程配置、生产质量管理、进度追踪、库存和排班管理等,全面覆盖生产运营关键环节。
java版MES系统源码,后端采用 Spring Boot 多模块架构
|
2天前
|
Java Spring
Spring源码学习——(二)
第二讲——了解BeanFactory的功能
|
2天前
|
Java Spring 容器
Spring源码学习——(一)
第一讲——了解BeanFactory和ApplicationContext
|
7天前
|
Oracle Java 关系型数据库
|
7天前
|
XML Java 数据格式
|
7天前
|
druid Java 关系型数据库
|
7天前
|
Java Spring 容器