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信息
相关推荐
Wang's Blog9 小时前
Java框架快速入门: Spring Security+OAuth2之JWT核心概念与实战
java·spring·log4j
Wang's Blog10 小时前
Java框架快速入门: Spring Security+OAuth2之核心角色与授权流程
java·spring·github
Wang's Blog10 小时前
Java框架快速入门: Spring Security+OAuth2之RBAC与角色分层实践
java·网络·spring
liangsheng_g14 小时前
Spring事务传播行为分派与挂起恢复源码实战
数据库·sql·spring
麻瓜code14 小时前
【Agent】从 0 手写智能体框架:ReAct + ToolCall 分层设计
人工智能·spring
小坏讲微服务15 小时前
Spring AI 高频面试题20道
java·spring·ai·agent·springai
Bs_MoneyMagnet15 小时前
基于springboot+vue的会议室预约管理系统的设计与实现 源码+文档
java·vue.js·spring boot·后端·spring·毕业设计·计算机毕业设计
Bs_MoneyMagnet15 小时前
基于springboot+vue的茶铺管理系统的设计与实现 源码+文档
java·vue.js·spring boot·后端·spring·毕业设计·计算机毕业设计
她说..15 小时前
RabbitMQ 使用场景详解
java·spring boot·后端·spring·rabbitmq·java-rabbitmq
盖伦发发16 小时前
MySQL InnoDB事务完整教程|ACID、MVCC、隔离级别、事务控制
经验分享·后端·spring·软件工程