Spring源碼解析——如何閱讀源碼

  最近沒什麼實質性的工做,正好有點時間,就想學學別人的代碼。也看過一點源碼,算是有了點閱讀的經驗,因而下定決心看下spring這種大型的項目的源碼,學學它的設計思想。java

  手碼不易,轉載請註明:xingoo
mysql

  這篇博文你能夠了解到:spring

  1 Spring jar包以及源碼使用sql

  2 簡單的spring運行示例函數

  3 利用斷點調試程序,如何快速的閱讀程序【快捷鍵等的使用】工具

  此次閱讀的源碼比較老了,是3.0.5版本的,因爲正好手頭有這個版本的源碼,並且平時基本上也是用的這個版本Spring,所以後文的分析也都是針對這個版本。this

  下面貢獻一下Jar包以及源碼,因爲百度雲上傳的壓縮包老是解壓失敗,就放在csdn上面了。spa

  下面看一下如何使用jar包以及源碼的source包

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

  選中必要的jar包,上面給出的源碼jar包中,導入spring3.0.5中的全部jar包。設計

  其中lib內的是spring的jar包,用到哪一個導入哪一個,不知道的話,所有導入就好了。

  外面的幾個jar包,用於日誌以及mysql的驅動。commons-logging jar包是必須的,其餘的隨意吧。

  不肯定的話,lib外面的這幾個jar包以及lib裏面的都導入就好了。

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

  選擇相應的source源碼包

  所有導入後,以下

 

  下面給出一個簡單的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 testSpring;  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>

  運行結果

 

  如何閱讀源碼

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

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

  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的類圖關係:

  

相關文章
相關標籤/搜索