spring装配是个大课题,能懂一点是一点吧。
关于代码链路,最后的方式就是倒序摸索,正序那么多逻辑,没有一百万也差不多少,所以就用倒序。
.
(点号)和#
井号是一个意思,下面代码可能不详细区分,复制出来是什么样就什么样。
但是有一说一,正规应该是点号,例如要去idea中找方法,点号就能找到,井号却找不到。
还真摸出来了,如下:
org.springframework.boot.SpringApplication#run(java.lang.String...) # run方法
org.springframework.boot.SpringApplication#refreshContext() # 没错 就是在refresh方法里
org.springframework.boot.SpringApplication#refresh() # 一路点过去
org.springframework.context.support.AbstractApplicationContext#refresh() # 一路点过去
org.springframework.context.support.AbstractApplicationContext#invokeBeanFactoryPostProcessors() #
org.springframework.context.support.PostProcessorRegistrationDelegate#invokeBeanFactoryPostProcessors(org.springframework.beans.factory.config.ConfigurableListableBeanFactory, java.util.List<org.springframework.beans.factory.config.BeanFactoryPostProcessor>) # 没错 这是一个方法(参数有点多)
org.springframework.context.support.PostProcessorRegistrationDelegate#invokeBeanDefinitionRegistryPostProcessors()
org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions()
org.springframework.context.annotation.ComponentScanAnnotationParser#parse()
org.springframework.context.annotation.ClassPathBeanDefinitionScanner#doScan() # 这个类里面有扫描方法
因篇幅问题不能全部显示,请点此查看更多更全内容