首页 > 其他分享 >Spring中XML的解析过程

Spring中XML的解析过程

时间:2024-06-15 22:14:08浏览次数:19  
标签:XML 解析器 调用 自定义 Spring 类内 标签 解析 方法

1.AbstractApplicationContext.obtainBeanFactory方法中,模版调用
2.AbstractRefreshableApplicationContex.refreshBeanFactory
该方法中会创建 DefaultListableBeanFactory用于收集BeanDefinition对象
会继续模版调用
3.AbstractXMLApplicationContext.loadBeanDefinitions方法
该方法中会进行委托调用
4.XMLBeanDefinitionReader.loadBeanDefinitions
该方法会 进行 模版调用
5.AbstractBeanDefinitionReader.loadBeanDefinitions
该方法会继续模版调用
6.XMLBeanDefinitionReader.loadBeanDefinitions
该方法会调用该类中的方法
7.XMLBeanDefinitionReader.doLoadBeanDefinitions
会继续类内调用
8.XMLBeanDefinitionReader.doLoadDocument
类内方法调用
9.DefaultDocument.loadDocument
通过w3c.dom解析成一个Document对象

10.XmlBeanDefinitionReader.registerBeanDefinitions
继续调用
11.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions
类内调用
12.DefaultBeanDefinitionDocumentReader.parseBeanDefinition
再进行委托调用,解析默认的Bean标签
13.BeanDefinitionParserDelegate.parseBeanDefinitionElement
类内方法调用
14.BeanDefinitionParserDelegate
createBeanDefinition...
解析标签成BeanDefinition对象的属性

15.BeanDefinitionParserDelgate.parseCustomElement
自定义标签需要自己注册标签解析器
自定义标签解析器需要做三个工作
一、自定义标签解析器
最好继承AbstractSimpleBeanDefinitionParser,这样很多基础方法都已经实现,只需要专注doParse方法就行

二、自定义NamespaceHandler,将标签解析器注册到spring容器
最好继承NamespaceHandlerSupport,基本方法都已被实现,只需要重写init方法,将解析器注册到容器

三、在META-INF目录下,创建spring.handlers文件用于url=handler,让spring进行加载注册
通过SPI的加载方式,将uri于命名空间对应,在xml配置时能进行相关提示。

标签:XML,解析器,调用,自定义,Spring,类内,标签,解析,方法
From: https://www.cnblogs.com/velloLei/p/18249812

相关文章

  • Spring中GenericBeanDefinition属性
    1.id再Spring容器中作为Bean的唯一标识2.name用于为id属性创建一个或多个别名,用空格、逗号分开3.classBean的类名,全限定名primary多个相同Bean再容器中的优先级5.parent标注该Bean的父类Bean,继承父类Bean的所有属性6.abstract标注Bean是否是抽象的,一般用于父类Bean。......
  • Spring配置文件的加载、解析
    Spring的核心流程是读取配置文件,解析并封装成BeanDefinition,并将所有的BeanDefinition收集到一个叫DefaultListableBeanFactory的容器中。一、setConfigLocation设置配置路径方便后续对其进行解析二、refresh方法,解析并封装BeanDefinition该方法中有几个重要的方法1.obtainF......
  • Apollo 决策规划代码详细解析 :Stage逻辑详解
    Apollo 决策规划代码详细解析 :Stage逻辑详解附赠自动驾驶最全的学习资料和量产经验:链接在本文你将学到下面这些内容:Stage中如何对task进行注册;Stage中如何调用task执行规划任务;LaneFollowStage 包含哪些task;LaneFollowStage 的详细运行逻辑;PlanOnReferenc......
  • Spark RDD与算子详解:案例解析(第3天)
    系列文章目录1-RDD的基本介绍(了解)2-如何构建RDD(熟悉)3-RDD的相关算子(案例详解)(掌握)4-sparkRDD算子相关面试题(重点)文章目录系列文章目录前言一、RDD的基本介绍(了解)1、什么是RDD2、RDD的五大特性3、RDD的五大特点二、如何构建RDD(熟悉)1、并行化本地集合方式2、读......
  • spring-2-依赖注入、循环依赖、三级缓存
    参考:SpringBoot———自动装配原理Spring依赖注入有几种?各有什么优缺点?Spring注解@Resource和@Autowired区别Spring是如何解决循环依赖问题?第二次讲Spring循环依赖,时长16分钟,我保证每一秒都是精华1.依赖注入1.1依赖注入的方式方式优点缺点适用场景属性注入......
  • 【网络编程开发】16.域名解析与http服务器实现原理
    16.域名解析与http服务器实现原理gethostbyname函数原型:#include<netdb.h>structhostent*gethostbyname(constchar*hostname);功能:获取主机名对应的IP地址参数:hostname:要查询的主机名。返回值:成功时,返回一个指向hostent结构的指针。失败时,返回NULL。......
  • 谢启鸿第四版高等代数第七章习题解析
    前言:之前写过两篇第七章习题解析,本篇主要是补充,将之前没有来得及写上的习题补充完整,顺便归个类。前两篇看主页吧,不指路了。习题7.4部分1(1).根据下列不变因子组写出有理标准型:解:排除0次多项式,的友阵为(1),的展开式为,则其友阵为可以得到有理标准型为.2(1).求下列矩阵的......
  • Spring AOP
            AOP(AspectOrientedProgramming):面向切编程。是对某⼀类事情的集中处理,例如网站的登录验证,不使用AOP的话发布文章需要一段代码进行验证、编辑文章需要验证......而使用AOP的话只需要在某⼀处配置⼀下,需要验证的地方都可以实现了。        AOP是......
  • 全双工与半双工技术解析
    随着信息技术的迅猛发展,通信系统的性能要求日益提高。在数据传输中,双工模式的选择对于提高系统效率、降低通信延迟具有重要意义。一、全双工模式全双工模式允许数据在通信链路的两个方向上同时进行传输,即A到B的同时可以B到A。这种通信方式极大地提高了数据传输的效率和实时性。......
  • spring boot(学习笔记第七课)
    springboot(学习笔记第七课)配置AOP,数据库操作(jdbcTemplate)学习内容:配置AOP数据库操作(jdbcTemplate)1.配置AOP如果想要在一些既存系统上对系统进行分析,监视,但是又不想改修原有的代码,可以通过AOP(AspectOfProgram)来实现。在pom.xml中引入spring-boot-starter......