spring源碼閱讀環(huán)境搭建
① 依賴工具
- gradle
- Git
- jdk1.8
- InteliJ IDEA
筆者當(dāng)前由于囊中羞澀 所有的環(huán)境是windows環(huán)境,如有不一樣的碰見一些無法預(yù)測的問題的話,請?jiān)谖恼潞罄m(xù)中進(jìn)行留言。
②源代碼拉取
大家可以采用git直接fork的方式直接進(jìn)行代碼的拉取,建立自己的倉庫做自由的提交,我在這里就直接down zip源碼包進(jìn)行搭建了。官方倉庫地址。
拉取完項(xiàng)目之后,導(dǎo)入idea中 idea中的gradle會直接對項(xiàng)目源碼進(jìn)行build的(在此提醒,gradle安裝之后的環(huán)境變量還需自己配置,以及idea中有關(guān)gradle的配置還請自行的去百度解決)
打開 IDEA Terminal ,輸入如下命令,預(yù)編譯 spring-oxm 項(xiàng)目:
gradlew :spring-oxm:compileTestJava
③ 單元測試
在 spring-context 項(xiàng)目中的 src/test/java/example 目錄下,已經(jīng)提供了一些示例。
① 解析 XML 配置文件成對應(yīng)的 BeanDefinition 們的流程
可調(diào)試 org.springframework.beans.factory.xml.XmlBeanDefinitionReaderTests 的 #withFreshInputStream() 和 #withImport() 這兩個(gè)單元測試。
相比來說,后者比前者多了一個(gè) <import /> 標(biāo)簽的解析。當(dāng)然,XmlBeanDefinitionReaderTests 類中,其它方法也可以簡單調(diào)試下??磁钟训呐d趣哈。
② 加載 Bean 的流程
可調(diào)試 org.springframework.beans.factory.xml.AbstractBeanFactoryTests 這個(gè)單元測試類里的方法。
實(shí)際上,AbstractBeanFactoryTests 是一個(gè)抽象類,所以在運(yùn)行時(shí),需要選擇對應(yīng)的子類,例如 XmlListableBeanFactoryTests 類。
③ ClassPathXmlApplicationContext 的流程
可調(diào)試 org.springframework.context.support.ClassPathXmlApplicationContextTests 這個(gè)單元測試類里的方法。例如 #testResourceAndInputStream() 方法。
④ 解析 Properties 配置文件成對應(yīng)的 BeanDefinition 們的流程
可調(diào)試 org.springframework.beans.factory.support.PropertiesBeanDefinitionReaderTests 這個(gè)單元測試?yán)锏姆椒ā?br>
⑤ 調(diào)試 Spring AOP 相關(guān)的流程
⑥ 調(diào)試 Spring Transaction 相關(guān)的流程
⑦ 調(diào)試 Spring MVC 相關(guān)的流程
后續(xù)為大家連載解讀一下spring各模塊之間的寫作以及流程。