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信息
相关推荐
胡尔摩斯.41 分钟前
SpringCloud企业级常用框架整合--下篇
spring·spring cloud·docker
考虑考虑2 小时前
Springboot捕获feign抛出的异常
spring boot·后端·spring
hello_ejb33 小时前
聊聊Spring AI Alibaba的PdfTablesParser
windows·python·spring
资讯分享周4 小时前
破局遗留系统!AI自动化重构:从静态方法到Spring Bean注入实战
spring·重构·自动化
岁岁岁平安4 小时前
SpringMVC入门学习总结(2025.04.16)
java·spring·java-ee·mvc·springmvc
Anarkh_Lee4 小时前
解决 Spring Boot 多数据源环境下事务管理器冲突问题(非Neo4j请求标记了 @Transactional 尝试启动Neo4j的事务管理器)
spring boot·后端·spring
异常君7 小时前
揭秘 Spring 验证机制:为何@Validated 在 Controller 层生效却在 Service 层失效?
java·后端·spring
掉鱼的猫7 小时前
史上最强的 Java Solon v3.2.0 发布(并发高 700%;内存省 50%)
java·spring·mcp
luckilyil7 小时前
springboot自定义starter(避坑教学)
java·spring boot·spring
小吕学编程8 小时前
基于Canal+Spring Boot+Kafka的MySQL数据变更实时监听实战指南
数据库·后端·mysql·spring·kafka