spring的中我们配置basePackages什么是进行扫描的?
从refresh()入口开始
AbstractApplicationContext#refresh()
AbstractApplicationContext#obtainFreshBeanFactory
AbstractRefreshableApplicationContext#refreshBeanFactory
AbstractXmlApplicationContext#loadBeanDefinitions
AbstractXmlApplicationContext#loadBeanDefinitions
AbstractBeanDefinitionReader#loadBeanDefinitions
AbstractBeanDefinitionReader#loadBeanDefinitions
AbstractBeanDefinitionReader#loadBeanDefinitions
AbstractBeanDefinitionReader#loadBeanDefinitions
XmlBeanDefinitionReader#loadBeanDefinitions
XmlBeanDefinitionReader#loadBeanDefinitions
XmlBeanDefinitionReader#doLoadBeanDefinitions
XmlBeanDefinitionReader#registerBeanDefinitions
DefaultBeanDefinitionDocumentReader#registerBeanDefinitions
DefaultBeanDefinitionDocumentReader#doRegisterBeanDefinitions
DefaultBeanDefinitionDocumentReader#parseBeanDefinitions
BeanDefinitionParserDelegate#parseCustomElement
BeanDefinitionParserDelegate#parseCustomElement
NamespaceHandlerSupport#parse
ComponentScanBeanDefinitionParser#parse
ClassPathBeanDefinitionScanner#doScan
从上面的doScan方法可以看出,根据我们配置的basePackages进行扫描,将definitions包装成 BeanDefinitionHolder返回
具体细节,请看下回分解。