天天看點

【spring源碼分析】準備工作

前言:之前寫過兩篇基于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子產品下操作即可。程式結構如下:

【spring源碼分析】準備工作

在basebean包下建立MultiConditionBean類,并進行相關注入配置。注:采用xml形式進行配置,便于閱讀與了解,注解形式的注入流程與xml形式大緻相同。

具體代碼如下:

【spring源碼分析】準備工作

xml具體配置内容如下圖:

【spring源碼分析】準備工作

2.建立測試代碼,進行測試

通過以上配置就可以建立測試代碼進行測試了,測試代碼包結構如下:

【spring源碼分析】準備工作
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     }      

運作結果如下:

【spring源碼分析】準備工作

結果正确,說明未出現源碼編譯等相關不可知的問題,下面将正式進入IOC容器初始化的過程中,由于spring源碼體系非常的龐大,希望自己能盡量寫清楚,搞懂相關問題,加油!

by Shawn Chen,2018.11.22日,晚

=========================================================

比你優秀的人比你還努力,你有什麼資格不去奮鬥!

__一個有理想的程式員。

繼續閱讀