前言:之前寫過兩篇基于xml形式的IOC容器初始化過程,現在看來寫的比較爛,最近又繼續閱讀spring源碼,對IOC容器的初始化有了一些新的認識,是以決定記錄下來,加深自己對spring的印象與了解。
注:筆者fork的spring源碼項目位址:https://github.com/morewindows0/spring-framework
該項目會不定期更新,是以代碼上可能會有變化。
spring版本:5.1.0.BUILD-SNAPSHOT(會定期合并master分支,該版本号會有改變)
1.調試源碼準備
從github上下載下傳源碼,編譯成功後,即可進行spring源碼的調試工作(具體如何操作自行搜尋解決即可)。由于我們隻需要對IOC相關内容進行調試,是以在spring-context子產品下操作即可。程式結構如下:

在basebean包下建立MultiConditionBean類,并進行相關注入配置。注:采用xml形式進行配置,便于閱讀與了解,注解形式的注入流程與xml形式大緻相同。
具體代碼如下:
xml具體配置内容如下圖:
2.建立測試代碼,進行測試
通過以上配置就可以建立測試代碼進行測試了,測試代碼包結構如下:
1 /**
2 * xml形式注入bean
3 */
4 @Test
5 public void testXmlIOC() {
6
7 System.out.println("xml形式注入bean調試過程開始");
8 // classpath*:com/dev/config/*
9 ApplicationContext context = new ClassPathXmlApplicationContext("classpath*:com/dev/config/multicondition.xml");
10
11 MultiConditionBean multiConditionBean = (MultiConditionBean) context.getBean("multiConditionBean");
12
13 System.out.println("class name:" + multiConditionBean.getClass().getName());
14
15 System.out.println("name屬性:" + multiConditionBean.getName());
16 System.out.println("gender屬性:" + multiConditionBean.getGender());
17
18 System.out.println("xml形式注入bean調試過程結束");
19 }
運作結果如下:
結果正确,說明未出現源碼編譯等相關不可知的問題,下面将正式進入IOC容器初始化的過程中,由于spring源碼體系非常的龐大,希望自己能盡量寫清楚,搞懂相關問題,加油!
by Shawn Chen,2018.11.22日,晚