Spring IOC(2)—-如何註冊bean定義
- 2019 年 10 月 7 日
- 筆記
前面說到IOC容器在刷新之前的一些初始化工作,現在來看看在refresh()方法中,是怎樣來載入註冊我們自己的bean定義的。
refresh()方法中有很多功能,從注釋中就可以看出來
我們本次重點關注invokeBeanFactoryPostProcessors(beanFactory);這個方法
該方法裡面可以獲取到前面初始化好的註解讀取器AnnotatedBeanDefinitionReader,前面在AnnotationConfigUtils#registerAnnotationConfigProcessors方法中是往beanFactory裡面註冊了配置類的處理器的ConfigurationClassPostProcessor,這個時候就可以拿出來使用了,創建一個配置類解析器對象ConfigurationClassParser,來具體處理幾種形式bean注入(@propertySource,@ComponentScan,@Import,@ImportResource,@bean),,最終再由ConfigurationClassBeanDefinitionReader將配置的bean定義載入到容器中ConfigurationClassBeanDefinitionReader#loadBeanDefinitionsForConfigurationClass
流程圖如下: