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$doGetBean
0
(
S
t
r
i
n
g
,
R
o
o
t
B
e
a
n
D
e
f
i
n
i
t
i
o
n
,
O
b
j
e
c
t
[
]
)
(
7
)
A
b
s
t
r
a
c
t
A
u
t
o
w
i
r
e
C
a
p
a
b
l
e
B
e
a
n
F
a
c
t
o
r
y
.
c
r
e
a
t
e
B
e
a
n
(
S
t
r
i
n
g
,
R
o
o
t
B
e
a
n
D
e
f
i
n
i
t
i
o
n
,
O
b
j
e
c
t
[
]
)
(
8
)
A
b
s
t
r
a
c
t
A
u
t
o
w
i
r
e
C
a
p
a
b
l
e
B
e
a
n
F
a
c
t
o
r
y
.
d
o
C
r
e
a
t
e
B
e
a
n
(
.
.
.
)
(
9
)
A
b
s
t
r
a
c
t
B
e
a
n
F
a
c
t
o
r
y
.
l
a
m
b
d
a
0(String, RootBeanDefinition, Object[]) (7)AbstractAutowireCapableBeanFactory.createBean(String, RootBeanDefinition, Object[]) (8)AbstractAutowireCapableBeanFactory.doCreateBean(...) (9)AbstractBeanFactory.lambda
0(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/