美文网首页
寻找AOP的入口

寻找AOP的入口

作者: eqgao | 来源:发表于2019-07-28 14:21 被阅读0次

参照Spring IOC 源码,BeanDefinition 加载以及注册的流程

解析标签阶段<aop:config>标签为例子(注册BeanPostProcessor)

org.springframework.context.support.AbstractApplicationContext#refresh
org.springframework.context.support.AbstractApplicationContext#obtainFreshBeanFactory
org.springframework.context.support.AbstractRefreshableApplicationContext#refreshBeanFactory
org.springframework.context.support.AbstractXmlApplicationContext#loadBeanDefinitions(org.springframework.beans.factory.support.DefaultListableBeanFactory)
org.springframework.context.support.AbstractXmlApplicationContext#loadBeanDefinitions(org.springframework.beans.factory.xml.XmlBeanDefinitionReader)
org.springframework.beans.factory.support.AbstractBeanDefinitionReader#loadBeanDefinitions(org.springframework.core.io.Resource...)
org.springframework.beans.factory.xml.XmlBeanDefinitionReader#loadBeanDefinitions(org.springframework.core.io.Resource)
org.springframework.beans.factory.xml.XmlBeanDefinitionReader#loadBeanDefinitions(org.springframework.core.io.support.EncodedResource)
org.springframework.beans.factory.xml.XmlBeanDefinitionReader#doLoadBeanDefinitions
org.springframework.beans.factory.xml.XmlBeanDefinitionReader#registerBeanDefinitions
org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader#registerBeanDefinitions
org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader#doRegisterBeanDefinitions
org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader#parseBeanDefinitions
org.springframework.beans.factory.xml.BeanDefinitionParserDelegate#parseCustomElement(org.w3c.dom.Element)
org.springframework.beans.factory.xml.BeanDefinitionParserDelegate#parseCustomElement(org.w3c.dom.Element, org.springframework.beans.factory.config.BeanDefinition)
org.springframework.beans.factory.xml.NamespaceHandlerSupport#parse
org.springframework.aop.config.ConfigBeanDefinitionParser#parse
org.springframework.aop.config.ConfigBeanDefinitionParser#configureAutoProxyCreator
org.springframework.aop.config.AopNamespaceUtils#registerAspectJAutoProxyCreatorIfNecessary
org.springframework.aop.config.AopConfigUtils#registerAspectJAutoProxyCreatorIfNecessary(org.springframework.beans.factory.support.BeanDefinitionRegistry, java.lang.Object)
org.springframework.beans.factory.support.DefaultListableBeanFactory#registerBeanDefinition

实例化Bean阶段 (执行BeanPostProcessors接口的postProcessAfterInitialization方法)

org.springframework.context.support.AbstractApplicationContext#refresh
org.springframework.context.support.AbstractApplicationContext#finishBeanFactoryInitialization
org.springframework.beans.factory.support.AbstractBeanFactory#getBean(java.lang.String, java.lang.Class<T>)
org.springframework.beans.factory.support.AbstractBeanFactory#doGetBean
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory#createBean(java.lang.String, org.springframework.beans.factory.support.RootBeanDefinition, java.lang.Object[])
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory#doCreateBean
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory#initializeBean(java.lang.String, java.lang.Object, org.springframework.beans.factory.support.RootBeanDefinition)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory#applyBeanPostProcessorsAfterInitialization

总结

解析标签阶段

1564293606756.png

如图在解析标签阶段,注册了一个AspectJAwareAdvisorAutoProxyCreator, AspectJAwareAdvisorAutoProxyCreator是一个实现了BeanPostProcessor的类。

它在IOC执行总体的位置如下。


1564293849060.png

实例化Bean阶段

在实例化Bean的阶段,获取BeanPostProcessor,并且执行。所以执行了AbstractAutowireCapableBeanFactory#applyBeanPostProcessorsAfterInitialization。所以Spring AOP的入口是在AspectJAwareAdvisorAutoProxyCreator.postProcessAfterInitialization()方法(父类)

它在IOC执行总体的位置如下。

1564293931858.png

相关文章

  • 寻找AOP的入口

    参照Spring IOC 源码,BeanDefinition 加载以及注册的流程 解析标签阶段

  • Spring AOP源码分析

    Spring AOP入口

  • Spring的Aop与事务源码分析

    Aop原理 1.分析入口@EnableAspectJAutoProxy 2.AnnotationAwareAspe...

  • spring aop内部方法调用无效修改

    有如下aop处理类和service方法: AOP处理类 需要处理的service 调用入口: 在切面处理中会对Ao...

  • Spring AOP使用介绍

    在讲解Spring Aop原理之前,需要先了解下如何使用Spring Aop。举例:打印方法出入口日志 添加xml...

  • Spring源码(四)-AOP入口

    前言 之前已经完成了springboot对Aop的整合,接下来找到Aop的入口,如果之前没有看过IOC的源码,请移...

  • 寻找讲述的入口

    一直都想好好重新开始码字,无论是写单位的公文抑或是自己的日记。如果文字能刊登、能变现,那就更好了。尽管已经开了...

  • 寻找学习的入口

    唤醒沉睡的大脑,开启全新的一天。这里是早起一分钟思维唤醒,我是主播乐鑫。 (自律,遇见更好的自己!这里是八点学时间...

  • 寻找艺术的入口

    题目有点大,我连艺术是什么都说大不清,但是我知道我确实在有意无意间寻找一道门,通往一个满是美的地方,而且不仅我这样...

  • Spring源码分析(七)SpringAOP生成代理类及执行的过

    1、AOP的入口 上一节我们在分析解析AOP标签的时候,第一步就是注册了一个类AspectJAwareAdviso...

网友评论

      本文标题:寻找AOP的入口

      本文链接:https://www.haomeiwen.com/subject/pvaurctx.html