Spring 容器的基本实现

xiaoxiao2021-02-28  46

主要类: ResourceLoader:定义资源加载器,主要应用于根据给定的资源文件地址返回对应的Resource BeanDefinitionReader(XmlBeanDefinitionReader):主要定义资源文件读取并转换为BeanDefinition的各个功能 EnvironmentCapable:定义获取Environment方法 DocumentLoader:定义从资源文件加载到转换Document的功能 BeanDefinitionDocumentReader(DefaultBeanDefinitionDocumentReader):读取Document,注册BeanDefinition 类图:

时序图:

步骤2(XmlBeanDefinitionReader类): 通过集成自AbstractBeanDefinitionReader中的方法,来使用ResourceLoadr将资源文件路径转换成该对应Resource文件,通过DocumentLoader对Resource文件进行转换,将Resource文件转换为Document 步骤3(DefaultBeanDefinitionDocumentReader类):通过实现接口BeanDefinitionDocumentReader的DefaultBeanDefinitionDocumentReader类对Document进行解析,并使用BeanDefinitionParserDelegate对Element进行解析

在DefaultBeanDefinitionDocumentReader类解析并注册并源码:

protected void parseBeanDefinitions(Element root, BeanDefinitionParserDelegate delegate) { if (delegate.isDefaultNamespace(root)) { NodeList nl = root.getChildNodes(); for (int i = 0; i < nl.getLength(); i++) { Node node = nl.item(i); if (node instanceof Element) { Element ele = (Element) node; if (delegate.isDefaultNamespace(ele)) { // 解析默认标签 parseDefaultElement(ele, delegate); } else { // 解析自定义标签 delegate.parseCustomElement(ele); } } } } else { delegate.parseCustomElement(root); } }

Spring bean默认标签解析注册原理 Spring bean自定义标签解析注册原理

转载请注明原文地址: https://www.6miu.com/read-2614249.html

最新回复(0)