从入口 org.springframework.context.support.AbstractApplicationContext#refresh 开始看
找到Bean的创建方法进入:
再进入详细方法:
找到getBean(beanName):
找到doGetBean(xxx,xxx,xxx,xxx);
找到实际的Bean创建方法createBean(beanName, mdb, args);可以非常明显的看到,Bean就是通过Proxy的方式获取的。
继续找下去resolveBeforeInstantiation(beanName, mbdToUse):
这时候就看到了 BeanPostProcessor#postProcessBeforeInitialization 和 BeanPostProcessor#postProcessAfterInitialization 两个经典中的经典了,随便找一个进去详细看下(这里我直接看applyBeanPostProcessorsBeforeInstantiation):
继续,可以非常清楚的看到(AbstractAutoProxyCreator):
进入可以看到createProxy():
此时,我们就找到CreateProxy的地方了:
继续看到经典的八股文:
经典之Cglib动态代理和JDK动态代理:
文章来源:https://www.toymoban.com/news/detail-424785.html
相信这一行代码Proxy.newProxyInstance(classLoader, proxiedInterfaces, this);大伙儿都很熟悉吧~。文章来源地址https://www.toymoban.com/news/detail-424785.html
到了这里,关于Spring AOP实现原理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!