SPRIN06_源码之核心组件接口BeanDefinition、Debug创建流程、流程图总结(六)

简介: SPRIN06_源码之核心组件接口BeanDefinition、Debug创建流程、流程图总结(六)

⑩③. 接下来继续跟踪debug堆栈–如上图,继续来进行加载,InputSource它把所有的资源拿过来,准备好以后有一个方法叫doLoadBeanDefinitions,就是层层加载,然后继续下边跟踪堆栈-入下图,有一个叫registerBeanDefinitions,这个registerBeanDefinitions方法里面传入了一个doc,事实上它最后引入了第三方的dom解析工具来把整个xml配置变成一个Document文档 也就是org.w3c.dom,这一块Document文档的流程大概了解下就行了


微信图片_20220108230901.png


⑩④. BeanDefinitionReader利用dom解析把xml成Document文档对象,然后再把Document文档对象再交给BeanDefinitionDocumentReader


微信图片_20220108230917.png


微信图片_20220108230921.png


⑩⑤. 继续跟踪堆栈–下图所示,这是以下步骤的堆栈,就不一一带着来研究堆栈的细节了:然后BeanDefinitionDocumentReader再负责把Document文档对象交给BeanDefinitionParserDelegate(Bean定义解析器委托)


微信图片_20220108230940.png


⑩⑥. 最终BeanDefinitionParserDelegate(Bean定义解析器委托)把Document文档对象解析成BeanDefinition,这里面也就利用了解释器模式

xml的所有信息解析完的信息并封装在了BeanDefinitionHolder(bean定义信息的持有)中


public class BeanDefinitionHolder implements BeanMetadataElement {
  private final BeanDefinition beanDefinition;
  private final String beanName;
}


⑩⑦. beanDefinition和beanname这两个玩意要注册到档案馆里面,它就为了方便,就先封装到了这个BeanDefinitionHolder(bean定义信息的持有)


⑩⑧. 然后就再注册这个玩意,直接拿到BeanDefinitionRegistry(bean定义信息的注册中心),给这个注册中心里面利用registerBeanDefinition这个方法进行注册,那它如何注册的?


在DefaultListableBeanFactory对信息进行校验,验证成功以后,再来看这个beanDefinitionMap.get (beanName);里面有没有这个bean的名字


Spring的底层大量使用到了这样的写法,想要给容器里面注册一个定义信息,但是先上来检查beanDefinitionMap里面有没有,没有才进行注册


也就是说现在是逐行解析,解析到每一个bean,解析成了以后,就要把它注册到档案馆


(DefaultListableBeanFactory)里面,然后先检查档案馆(beanDefinitionMap)里面有没有


如果没有就注册进去,如果有就不用注册了,至此就把整个注册流程就了解清楚了




相关文章
|
5天前
|
存储 人工智能 安全
AI 越智能,数据越危险?
阿里云提供AI全栈安全能力,为客户构建全链路数据保护体系,让企业敢用、能用、放心用
|
8天前
|
域名解析 人工智能
【实操攻略】手把手教学,免费领取.CN域名
即日起至2025年12月31日,购买万小智AI建站或云·企业官网,每单可免费领1个.CN域名首年!跟我了解领取攻略吧~
|
7天前
|
数据采集 人工智能 自然语言处理
3分钟采集134篇AI文章!深度解析如何通过云无影AgentBay实现25倍并发 + LlamaIndex智能推荐
结合阿里云无影 AgentBay 云端并发采集与 LlamaIndex 智能分析,3分钟高效抓取134篇 AI Agent 文章,实现 AI 推荐、智能问答与知识沉淀,打造从数据获取到价值提炼的完整闭环。
448 93
|
1天前
|
开发者
「玩透ESA」ESA启用和加速-ER在加速场景中的应用
本文介绍三种配置方法:通过“A鉴权”模板创建函数并设置触发器路由;在ESA上配置回源302跟随;以及自定义响应头。每步均配有详细截图指引,帮助开发者快速完成相关功能设置,提升服务安全性与灵活性。
286 2
|
7天前
|
SQL 人工智能 自然语言处理
Geo优化SOP标准化:于磊老师的“人性化Geo”体系如何助力企业获客提效46%
随着生成式AI的普及,Geo优化(Generative Engine Optimization)已成为企业获客的新战场。然而,缺乏标准化流程(Geo优化sop)导致优化效果参差不齐。本文将深入探讨Geo专家于磊老师提出的“人性化Geo”优化体系,并展示Geo优化sop标准化如何帮助企业实现获客效率提升46%的惊人效果,为企业在AI时代构建稳定的流量护城河。
407 156
Geo优化SOP标准化:于磊老师的“人性化Geo”体系如何助力企业获客提效46%
|
7天前
|
数据采集 缓存 数据可视化
Android 无侵入式数据采集:从手动埋点到字节码插桩的演进之路
本文深入探讨Android无侵入式埋点技术,通过AOP与字节码插桩(如ASM)实现数据采集自动化,彻底解耦业务代码与埋点逻辑。涵盖页面浏览、点击事件自动追踪及注解驱动的半自动化方案,提升数据质量与研发效率,助力团队迈向高效、稳定的智能化埋点体系。(238字)
314 158