天天看點

關于Spring的源碼解析,如何閱讀源碼

作者:文渡

如何使用jar包以及源碼的source包

首先,在工程右鍵,屬性中,添加必要的jar包。

關于Spring的源碼解析,如何閱讀源碼

選中必要的jar包,上面給出的源碼jar包中,導入spring3.0.5中的所有jar包。

其中lib内的是spring的jar包,用到哪個導入哪個,不知道的話,全部導入就行了。

外面的幾個jar包,用于日志以及mysql的驅動。commons-logging jar包是必須的,其他的随意吧。

不确定的話,lib外面的這幾個jar包以及lib裡面的都導入就行了。

關于Spring的源碼解析,如何閱讀源碼

導入jar包後,點開jar包,選中source attachment進行編輯,連結到源碼的jar包。

關于Spring的源碼解析,如何閱讀源碼

選擇相應的source源碼包

關于Spring的源碼解析,如何閱讀源碼

全部導入後,如下

關于Spring的源碼解析,如何閱讀源碼

spring樣例

首先是一個必要的POJO類,用于注入屬性的值。

1 package com.test.bean; 2 
 3 public class Person { 4     
 5     private String name; 6     private int age; 7     
 8     public String getName() { 9         return name; 10 } 11     public void setName(String name) { 12         this.name = name; 13 } 14     public int getAge() { 15         return age; 16 } 17     public void setAge(int age) { 18         this.age = age; 19 } 20     public void info(){ 21         System.out.println("name:"+getName()+" age:"+getAge()); 22 } 23 }
           

主函數,用于讀取資源檔案,擷取bean,調用info方法

1 package test.spring; 2 
 3 import org.springframework.context.ApplicationContext; 4 import org.springframework.context.support.ClassPathXmlApplicationContext; 5 
 6 import com.test.bean.Person; 7 
 8 public class Test { 9     public static void main(String[] args){ 10         ApplicationContext ctx = new ClassPathXmlApplicationContext("bean.xml");//讀取bean.xml中的内容
11         Person p = ctx.getBean("person",Person.class);//建立bean的引用對象
12 p.info(); 13 } 14 }
           

bean.xml用于配置bean的資源檔案

1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 3     xmlns="http://www.springframework.org/schema/beans"
 4     xsi:schemaLocation="http://www.springframework.org/schema/beans
 5     http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
 6     <bean id="person" class="com.test.bean.Person">
 7         <property name="name" value="xingoo"/>
 8         <property name="age" value="12"/>
 9     </bean>
10 </beans>
           

運作結果

關于Spring的源碼解析,如何閱讀源碼

閱讀源碼

首先,有了前面的jar包以及源碼包,你就可以通過這個簡單的程式,進行但不的調試,閱讀源碼。

關于Spring的源碼解析,如何閱讀源碼

簡單的說下調試的快捷鍵:

1 F5:下一步,可以進入下一個函數棧

2 F6:目前函數的下一步,不會進入其他的函數。

3 F8:下一個斷點。

4 也可以通過選中一個變量或者表達式,按ctrl+shift+i 來檢視内容。或者添加監視的方式,檢視。

5 可以通過快捷鍵F2,來檢視一個函數方法的javadoc,即說明

6 快捷鍵F3或者ctrl+滑鼠點選,進入一個函數

7 ctrl+shift+G 檢視目前方法都有誰在使用

8 F4檢視類的繼承關系,可以向上顯示出類繼承的父類以及接口。

有了調試的方法,接下來,就是如何閱讀源碼了!

1 參考書籍,推薦《Spring技術内幕》

這本書,基本上很詳細的講述了,spring的實作方式,以及類之間的複雜關系。可以幫助你快速的理清複雜的類之間的關系。

2 使用StarUML畫類圖

比如你好不容易理清了一個部分的關系,很快就會忘記其中的關系,那麼可以通過這個工具,簡單的畫出其中的複雜關系。

這樣,下一次看的時候也會清楚一些,這是我今天剛畫好的ClassPathXmlApplicationContext的類圖關系:

關于Spring的源碼解析,如何閱讀源碼