spring源码----loadBeanDefinitions(DefaultListableBeanFactory)详解

方法图片:

在这里插入图片描述
首先执行第一个方法:

new XmlBeanDefinitionReader

这个方法 就是单纯的创建一个 XmlBeanDefinitionReader在这里插入图片描述

接着往下执行这四个方法:

就看注释就行没什么太大意义
往下走 执行:
在这里插入图片描述

loadBeanDefinitions(XmlBeanDefinitionReader)

在这里插入图片描述
这个就是判断你是以什么路径加载进来的
我们是 走的第二条

在这里插入图片描述
我们在refresh之前 就设置了 这个属性 所以走的是第二条
在这里插入图片描述
再看一下他的属性值嘛:
在这里插入图片描述
然后往下执行:
在这里插入图片描述

loadBeanDefinitions(String…)

然后进来 ,在把数据转换从一个个的string 进行执行
在这里插入图片描述

loadBeanDefinitions(String)

在这里插入图片描述
关于那个actualResources参数的解释
在这里插入图片描述

loadBeanDefinitions(String,@Nullable Set《Resource》)

在这里插入图片描述
开始进行判断 是不是属于ResourcePatternResolver的子类
是的话开始进行将你传进来的string 转换从 Resource[]
关于 Resource 这个类的简介:
在这里插入图片描述
这是目前Resources的值
在这里插入图片描述

往下走:
在这里插入图片描述

loadBeanDefinitions(Resource…)

将 Resource…转换成 resource进行 解析:
在这里插入图片描述
往下走:
在这里插入图片描述

loadBeanDefinitions(Resource)

在这里插入图片描述
关于创建的 这个 类EncodedResource解释如下:

在这里插入图片描述
他的构造方法:就是读取时候你的xml编码格式,
在这里插入图片描述

loadBeanDefinitions(EncodedResource)

在这里插入图片描述
第一部分
这一部分 前面就是个 报错+日志打印
后面部分就是创建个HashSet 进行已加载的路径 如果出现一样的则报错
在这里插入图片描述
第二部分

这一部分就是获取流 然后你如果设置了 编码格式那就设置一下,没有的话就算了,然后执行下一个方法
在这里插入图片描述

doLoadBeanDefinitions(InputSource ,Resource)

在这里插入图片描述

然后进入doLoadDocument方法里面还有包装一下 在进入下一个方法:

在这里插入图片描述
进入里面后是这样的方法
在这里插入图片描述
解析文档里面父元素 子元素 属性啊等等这些信息 解析完成后:

在这里插入图片描述

返回doLoadBeanDefinitions(InputSource ,Resource)

在这里插入图片描述

registerBeanDefinitions

在这里插入图片描述
具体解释看注释 咱直接往下走:
在这里插入图片描述
在这里插入图片描述
再往下走:
在这里插入图片描述

parseDefaultElement

解析默认命名空间的:
在这里插入图片描述
里面有点多 有兴趣可以自己去看看

delegate.parseCustomElement

非默认的命名空间:
在这里插入图片描述

执行完上述两个方法前后:

执行之前 有一个参数是来记录信息的:
在这里插入图片描述
执行完之后

在这里插入图片描述

总结

从String[] -string-Resource[]- resource,最终开始将resource读取成一个document文档,根据文档的节点信息封装成一个个的BeanDefinition对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值