当前位置: 首页 > news >正文

Spring AOP基于XML方式笔记整理

XML AOP 加载流程
  1. ClassPathXmlApplicationContext#refresh
  2. AbstractApplicationContext#obtainFreshBeanFactory
  3. AbstractRefreshableApplicationContext#refreshBeanFactory
  4. 创建DefaultListableBeanFactory
  5. AbstractApplicationContext#loadBeanDefinitions(beanFactory)
  6. 创建XmlBeanDefinitionReader(beanFactory)
  7. AbstractApplicationContext#loadBeanDefinitions(beanDefinitionReader)
  8. AbstractBeanDefinitionReader#loadBeanDefinitions(locations)
  9. XmlBeanDefinitionReader#loadBeanDefinitions(encodedResource)
  10. XmlBeanDefinitionReader#doLoadBeanDefinitions(inputSource, resource)
  11. XmlBeanDefinitionReader#registerBeanDefinitions(doc, resource)
  12. 创建DefaultBeanDefinitionDocumentReader对象
  13. DefaultBeanDefinitionDocumentReader#registerBeanDefinitions(doc, readerContext)
  14. DefaultBeanDefinitionDocumentReader#doRegisterBeanDefinitions(element)
  15. DefaultBeanDefinitionDocumentReader#parseBeanDefinitions(element, delegate)
  16. 解析默认标签:DefaultBeanDefinitionDocumentReader#parseDefaultElement
  17. 解析非默认标签:BeanDefinitionParserDelegate#parseCustomElement(ele)
解析非默认标签
  1. 通过element获取namespaceUri
  2. 从readerContext中获取NamespaceHandler: DefaultNamespaceHandlerResolver
  3. DefaultNamespaceHandlerResolver#resolve(namespaceUri)
  4. 从META-INF/spring.handlers中加载所有的handlerMapping并根据namespaceUri获取匹配的值
  5. 实例化AopNamespaceHandler并调用init进行初始化,并返回实例对象
  6. NamespaceHandlerSupport#parse(element, parserContext) 解析标签beanDefinition信息
  7. 根据标签获取AopNamespaceHandler中注册的BeanDefinitionParser
  8. ConfigBeanDefinitionParser#parse(element, parserContext)解析pointcut, advisor, aspect信息

相关文章:

  • 建议收藏《2023华为海思实习笔试-数字芯片真题+解析》(附下载)
  • 【Python 千题 —— 基础篇】地板除计算
  • 【ChatOCR】OCR+LLM定制化关键信息抽取(附开源大语言模型汇总整理)
  • Postman测试金蝶云星空Webapi【协同开发云】
  • 在NISQ小型计算机上执行大型并行量子计算的可能性
  • R语言爬虫代码模版:技术原理与实践应用
  • python模块的介绍和导入
  • 基于深度学习的植物识别算法 - cnn opencv python 计算机竞赛
  • ArcGIS for Android 禁止地图旋转
  • 基于8051单片机与1601LCD的计算器设计
  • python综合应用
  • 一键报警可视对讲管理机10寸触摸屏管理机
  • SQL server数据库端口访问法
  • Zookeeper安装及配置
  • react+canvas实现横跨整个页面的动态的波浪线(贝塞尔曲线)
  • 【Leetcode】101. 对称二叉树
  • 「前端」从UglifyJSPlugin强制开启css压缩探究webpack插件运行机制
  • 【刷算法】求1+2+3+...+n
  • Java 最常见的 200+ 面试题:面试必备
  • JavaScript/HTML5图表开发工具JavaScript Charts v3.19.6发布【附下载】
  • Python爬虫--- 1.3 BS4库的解析器
  • tweak 支持第三方库
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 搭建gitbook 和 访问权限认证
  • 检测对象或数组
  • 深入浅出Node.js
  • 通过git安装npm私有模块
  • 推荐一个React的管理后台框架
  • 【干货分享】dos命令大全
  • 曜石科技宣布获得千万级天使轮投资,全方面布局电竞产业链 ...
  • ​水经微图Web1.5.0版即将上线
  • (1)Android开发优化---------UI优化
  • (30)数组元素和与数字和的绝对差
  • (第61天)多租户架构(CDB/PDB)
  • (附源码)基于SSM多源异构数据关联技术构建智能校园-计算机毕设 64366
  • (七)c52学习之旅-中断
  • (算法设计与分析)第一章算法概述-习题
  • (一)Dubbo快速入门、介绍、使用
  • (一)eclipse Dynamic web project 工程目录以及文件路径问题
  • (转)ABI是什么
  • (转)JAVA中的堆栈
  • (转)LINQ之路
  • (转)为C# Windows服务添加安装程序
  • **Java有哪些悲观锁的实现_乐观锁、悲观锁、Redis分布式锁和Zookeeper分布式锁的实现以及流程原理...
  • .gitignore文件_Git:.gitignore
  • .NET Core 成都线下面基会拉开序幕
  • .NET delegate 委托 、 Event 事件,接口回调
  • /usr/bin/env: node: No such file or directory
  • @kafkalistener消费不到消息_消息队列对战之RabbitMq 大战 kafka
  • [ C++ ] STL---stack与queue
  • [ vulhub漏洞复现篇 ] AppWeb认证绕过漏洞(CVE-2018-8715)
  • [20190401]关于semtimedop函数调用.txt
  • [BZOJ5125]小Q的书架(决策单调性+分治DP+树状数组)
  • [C/C++]数据结构----顺序表的实现(增删查改)
  • [HXPCTF 2021]includer‘s revenge