spring源碼學習導航路線

1.從new 容器開始,進入注意主體的三個 方法

1.this()
2.register(annotatedClasses);
3.refresh()
思路:
– 1.默認的哪個bean ConfigurationClassPostProcessor 在哪裏被註冊bd的 和 哪裏 被實例化放入 父類的singtonMap中的 ,bd的註冊對應的工廠是這個嘛??
2.裏面有個mergeBean的概念?–是否說一個bean中有依賴其他bean,還有 FactoryBean 默認就是自己加想要創建的bean(&的意思)
3.明確 所有的創建bean的方法好多其實內部都是先調用的getBean()操作的,
ConfigurationClassPostProcessor從第一個內部bean()的創建調用到refresh中xxx後執行調用到getbean 就可以看出來
4.beanPostProcess(beanFactory中的重要屬性集合),有兩個spirng默認beanPostProcess是啥時候加入工廠中的,還有那外部的實現beanPostProcess接口的 beanPostProcess呢??
–1).-默認的是在進行refresh中的 prepareBeanFactory()中:
beanFactory.addBeanPostProcessor(new ApplicationContextAwareProcessor(this));–非常核心!!
beanFactory.addBeanPostProcessor(new ApplicationListenerDetector(this));

–2).外部直接的那些:
是先通過 ConfigurationClassPostProcessor 掃描 所有的bean bdf註冊到map後,執行下面就可以得到自己的
bdf了(其實是外部refresh 執行到//註冊beanPostProcessor; registerBeanPostProcessors(beanFactory);)
//從beanDefinitionMap中得到所有的BeanPostProcessor
String[] postProcessorNames = beanFactory.getBeanNamesForType(BeanPostProcessor.class, true, false);

----外部的那些process,先完成其bean的生命週期後,馬上加入spring工廠processList上面
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
2.spring到處都是通過this上下文來關聯上,入xxcontext, resouceLoder,xxxx其實說的都是一個東西就是容器,所以叫上下文自己的理解哈在這裏插入圖片描述
3.明確ConfigurationClassPostProcessor(beanFactory接口) 和 後置處理器接口 beanPostProcessor不是同,沒有聯繫的!!

2.明確this()中做到最重要的事情:

1.父類構造中創建了bean工廠DefalutListableBeanFactory
2).傳遞了容器上下文(核心)給xxx, 3.創建一個讀取註解的Bean定義讀取器 reader
4)。創建BeanDefinition掃描器–ClassPathBeanDefnitionScanner

5).在第3)時候 註冊了默認的7個beandef 註冊put入map(含重要的ConfigurationClassPostProcessor)

2…register中做到最重要的事情:
(從方法名都可以看出來,他是來註冊bd的主要)
1).註冊 自己定義的那些 beandef(bd) 到上下文上(一般就是指定註冊appConfig的bd)
2),裏面有個解析 類 上面的 通用註解的方法(後面的掃描出其他的bean都會來調用)

3.reshesh():
1).有一步prepareBeanFactory(beanFactory);準備工廠信息重要,裏面有
beanFactory.addBeanPostProcessor(new ApplicationContextAwareProcessor(this));

3.明確註冊bd 到bdfMap 和註冊可以用的 bean到singtonMap 是執行的不同方法!!
1).註冊bdfMap:

BeanDefinitionReaderUtils.registerBeanDefinition(definitionHolder, registry);

2)註冊singtonMap:
在這裏插入圖片描述

發佈了34 篇原創文章 · 獲贊 0 · 訪問量 2440
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章