1,是谁生成的代理类,这里暂且记住是AnnotationAwareAspectJAutoPrxoyCreator这个类来生成的代理类。
2.下面是调用链
**加粗样式(1)AbstractApplicationContext.finishBeanFactoryInitialization(ConfigurableListableBeanFactory)
(2) DefaultListableBeanFactory.preInstantiateSingletons()
(3)AbstractBeanFactory.getBean(String)
(4)AbstractBeanFactory.doGetBean(String, Class, Object[],boolean)
(5)DefaultSingletonBeanRegistry.getSingleton(String, ObjectFactory<?>)
(6)AbstractBeanFactory.lambda$doGetBean0(String,RootBeanDefinition,Object[])(7)AbstractAutowireCapableBeanFactory.createBean(String,RootBeanDefinition,Object[])(8)AbstractAutowireCapableBeanFactory.doCreateBean(...)(9)AbstractBeanFactory.lambda0(String, RootBeanDefinition, Object[])
(7)AbstractAutowireCapableBeanFactory.createBean(String, RootBeanDefinition, Object[])
(8)AbstractAutowireCapableBeanFactory.doCreateBean(...)
(9)AbstractBeanFactory.lambda0(String,RootBeanDefinition,Object[])(7)AbstractAutowireCapableBeanFactory.createBean(String,RootBeanDefinition,Object[])(8)AbstractAutowireCapableBeanFactory.doCreateBean(...)(9)AbstractBeanFactory.lambdadoGetBean$0(String, RootBeanDefinition, Object[])
(10)AbstractAutowireCapableBeanFactory.createBean(String, RootBeanDefinition, Object[])
(11)AbstractAutowireCapableBeanFactory.doCreateBean(…)
(12)AbstractAutowireCapableBeanFactory.initializeBean(…)
(13)AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsAfterInitialization(.)
(14)AnnotationAwareAspectJAutoProxyCreator(AbstractAutoProxyCreator).postProcessAfterInitialization(…)
(15)AnnotationAwareAspectJAutoProxyCreator(AbstractAutoProxyCreator).wrapIfNecessary(… …
(16) AbstractAutoProxyCreator.createProxy(Class<?>, String, Object[], TargetSource)
(17)ProxyFactory.getProxy(ClassLoader)
(18)ProxyFactory(ProxyCreatorSupport).createAopProxy()
参考:https://www.douban.com/note/717482377/
本文详细解析了Spring框架中AOP代理的创建过程,从AbstractApplicationContext初始化到AnnotationAwareAspectJAutoProxyCreator生成代理类的完整调用链。通过深入源码,揭示了Spring如何在运行时动态创建代理对象,实现面向切面编程。
1092

被折叠的 条评论
为什么被折叠?



