當前位置:首頁 » 操作系統 » 閱讀源碼

閱讀源碼

發布時間: 2022-01-30 19:32:37

Ⅰ 如何閱讀android framework源碼

由於工作需要大量修改framework代碼,在AOSP(AndroidOpenSourceProject)源碼上花費了不少功夫,Application端和Services端都看和改了不少.如果只是想看看一些常用類的實現,在Android包管理器里把源碼下載下來,隨便一個IDE配好SourceCode的path看就行.但如果想深入的了解Android系統,那麼可以看下我的一些簡單的總結.知識javaJava是AOSP的主要語言之一.沒得說,必需熟練掌握.熟練的AndroidApp開發linuxAndroid基於Linux的,並且AOSP的推薦編譯環境是Ubuntu12.04.所以熟練的使用並了解Linux這個系統是必不可少的.如果你想了解偏底層的代碼,那麼必需了解基本的Linux環境下的程序開發.如果再深入到驅動層,那麼Kernel相關的知識也要具備.MakeAOSP使用Make系統進行編譯.了解基本的Makefile編寫會讓你更清晰了解AOSP這個龐大的項目是如何構建起來的.GitAOSP使用git+repo進行源碼管理.這應該是程序員必備技能吧.C++Android系統的一些性能敏感模塊及第三方庫是用C++實現的,比如:Input系統,Chromium項目(WebView的底層實現).硬體流暢的國際網路AOSP代碼下載需要你擁有一個流暢的國際網路.如果在下載代碼這一步就失去耐心的話,那你肯定沒有耐心去看那亂糟糟的AOSP代碼.另外,好程序員應該都會需要一個流暢的Google.一台運行Ubuntu12.04的PC.如果只是閱讀源碼而不做太多修改的話,其實不需要太高的配置.一台Nexus設備AOSP項目默認只支持Nexus系列設備.沒有也沒關系,你依然可以讀代碼.但如果你想在大牛之路走的更遠,還是改改代碼,然後刷機調試看看吧.高品質USB線要刷機時線壞了,沒有更窩心的事兒了.軟體Ubuntu12.04官方推薦,沒得選.OracleJava1.6注意不要用OpenJDK.這是個坑,官方文檔雖然有寫,但還是單獨提一下.安裝:sudoapt-getinstallpython-software-propertiessudoadd-apt-repositoryppa:webupd8team/javasudoapt-getupdatesudoapt-getinstalloracle-java6-installersudoapt-getinstalloracle-java6-set-defaultEclipse估計會有不少人吐槽,為什麼要用這個老古董.其實原因很簡單,合適.剛開始搞AOSP時,為了找到效率最優的工具,我嘗試過Eclipse,IntelliJIDEA,Vim+Ctags,SublimeText+Ctags.最終結果還是Eclipse.主要優點有:有語法分析(快速准確的類,方法跳轉).支持C++(IntelliJ的C++支持做的太慢了).嵌入了DDMS,ViewHierarchy等調試工具.為了提高效率,花5分鍾背下常用快捷鍵非常非常值得.調整好你的classpath,不要導入無用的代碼.因為AOSP項目代碼實在是太多了.當你還不需要看C++代碼時,不要為項目添加C++支持,建索引過程會讓你崩潰.IntellijIDEA開發App必備.當你要調試系統的某個功能是,常常需要迅速寫出一個調試用App,這個時候老舊的Eclipse就不好用了.ItellijIDEA的xml自動補全非常給力.巨人的肩膀這個一定要先讀.項目介紹,代碼下載,環境搭建,刷機方法,Eclipse配置都在這里.這是一切的基礎.這個其實是給App開發者看的.但是裡面也有不少關於系統機制的介紹,值得細讀.此老羅非彼老羅.羅升陽老師的博客非常有營養,基本可以作為指引你開始閱讀AOSP源碼的教程.你可以按照博客的時間順序一篇篇挑需要的看.但這個系列的博客有些問題:早期的博客是基於舊版本的Android;大量的代碼流程追蹤.讀文章時你一定要清楚你在看的東西在整個系統處於什麼樣的位置.鄧凡平老師也是為Android大牛,博客同樣很有營養.但是不像羅升陽老師的那麼系統.的是一些技術點的深入探討.Android官方Issue列表.我在開發過程中發現過一些奇怪的bug,最後發現這里基本都有記錄.當然你可以提一些新的,有沒有人改就是另外一回事了.一定要能流暢的使用這個工具.大量的相關知識是沒有人系統的總結的,你需要自己搞定.其它代碼組織AOSP的編譯單元不是和git項目一一對應的,而是和Android.mk文件一一對應的.善用mmm命令進行模塊編譯將節省你大量的時間.Binder這是Android最基礎的進程間通訊.在Application和Systemservices之間大量使用.你不僅要知道AIDL如何使用,也要知道如何手寫Binder介面.這對你理解Android的Application和Systemservices如何交互有非常重要的作用.Binder如何實現的倒不必著急看.HAL除非你對硬體特別感興趣或者想去方案公司上班,否則別花太多時間在這一層.CyanogenMod這是一個基於AOSP的第三方Rom.從這個項目的wiki里你能學到很多AOSP官方沒有告訴你的東西.比如如何支持Nexus以外的設備.DIA這是一個Linux下畫UML的工具,能夠幫你梳理看過的代碼.XDA這里有最新資訊和最有趣的論壇.想到了再補充.

Ⅱ 大牛們是怎麼閱讀 Android 系統源碼的

如果只是想看看一些常用類的實現, 在Android包管理器里把源碼下載下來, 隨便一個IDE配好Source Code的path看就行.
但如果想深入的了解Android系統, 那麼可以看下我的一些簡單的總結.

知識
Java
Java是AOSP的主要語言之一. 沒得說, 必需熟練掌握.
熟練的Android App開發
Linux
Android基於Linux的, 並且AOSP的推薦編譯環境是Ubuntu 12.04. 所以熟練的使用並了解Linux這個系統是必不可少的. 如果你想了解偏底層的代碼, 那麼必需了解基本的Linux環境下的程序開發. 如果再深入到驅動層, 那麼Kernel相關的知識也要具備.
Make
AOSP使用Make系統進行編譯. 了解基本的Makefile編寫會讓你更清晰了解AOSP這個龐大的項目是如何構建起來的.
Git
AOSP使用git+repo進行源碼管理. 這應該是程序員必備技能吧.
C++
Android系統的一些性能敏感模塊及第三方庫是用C++實現的, 比如: Input系統, Chromium項目(WebView的底層實現).

硬體
流暢的國際網路
AOSP代碼下載需要你擁有一個流暢的國際網路. 如果在下載代碼這一步就失去耐心的話, 那你肯定沒有耐心去看那亂糟糟的AOSP代碼. 另外, 好程序員應該都會需要一個流暢的Google.
一台運行Ubuntu 12.04的PC.
如果只是閱讀源碼而不做太多修改的話, 其實不需要太高的配置.
一台Nexus設備
AOSP項目默認只支持Nexus系列設備. 沒有也沒關系, 你依然可以讀代碼. 但如果你想在大牛之路走的更遠, 還是改改代碼, 然後刷機調試看看吧.
高品質USB線
要刷機時線壞了, 沒有更窩心的事兒了.
軟體
Ubuntu 12.04
官方推薦, 沒得選.
Oracle Java 1.6
注意不要用OpenJDK. 這是個坑, 官方文檔雖然有寫, 但還是單獨提一下.
安裝:
sudo apt-get install python-software-properties
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java6-installer
sudo apt-get install oracle-java6-set-default

Eclipse
估計會有不少人吐槽, 為什麼要用這個老古董. 其實原因很簡單, 合適. 剛開始搞AOSP時, 為了找到效率最優的工具, 我嘗試過Eclipse, IntelliJ IDEA, Vim+Ctags, Sublime Text+Ctags. 最終結果還是Eclipse. 主要優點有:
有語法分析 (快速准確的類, 方法跳轉).
支持C++ (IntelliJ的C++支持做的太慢了).
嵌入了DDMS, View Hierarchy等調試工具.
為了提高效率, 花5分鍾背下常用快捷鍵非常非常值得.
調整好你的classpath, 不要導入無用的代碼. 因為AOSP項目代碼實在是太多了. 當你還不需要看C++代碼時, 不要為項目添加C++支持, 建索引過程會讓你崩潰.
Intellij IDEA
開發App必備. 當你要調試系統的某個功能是, 常常需要迅速寫出一個調試用App, 這個時候老舊的Eclipse就不好用了. Itellij IDEA的xml自動補全非常給力.
巨人的肩膀

這個一定要先讀. 項目介紹, 代碼下載, 環境搭建, 刷機方法, Eclipse配置都在這里. 這是一切的基礎.

這個其實是給App開發者看的. 但是裡面也有不少關於系統機制的介紹, 值得細讀.

此老羅非彼老羅. 羅升陽老師的博客非常有營養, 基本可以作為指引你開始閱讀AOSP源碼的教程. 你可以按照博客的時間順序一篇篇挑需要的看.但這個系列的博客有些問題:
早期的博客是基於舊版本的Android;
大量的代碼流程追蹤. 讀文章時你一定要清楚你在看的東西在整個系統處於什麼樣的位置.

鄧凡平老師也是為Android大牛, 博客同樣很有營養. 但是不像羅升陽老師的那麼系統. 更多的是一些技術點的深入探討.

Android官方Issue列表. 我在開發過程中發現過一些奇怪的bug, 最後發現這里基本都有記錄. 當然你可以提一些新的, 有沒有人改就是另外一回事了.

一定要能流暢的使用這個工具. 大量的相關知識是沒有人系統的總結的, 你需要自己搞定.
其它
代碼組織
AOSP的編譯單元不是和git項目一一對應的, 而是和Android.mk文件一一對應的. 善用mmm命令進行模塊編譯將節省你大量的時間.
Binder
這是Android最基礎的進程間通訊. 在Application和System services之間大量使用. 你不僅要知道AIDL如何使用, 也要知道如何手寫Binder介面. 這對你理解Android的Application和System services如何交互有非常重要的作用. Binder如何實現的倒不必著急看.
HAL
除非你對硬體特別感興趣或者想去方案公司上班, 否則別花太多時間在這一層.
CyanogenMod
這是一個基於AOSP的第三方Rom. 從這個項目的wiki里你能學到很多AOSP官方沒有告訴你的東西. 比如如何支持Nexus以外的設備.
DIA
這是一個Linux下畫UML的工具, 能夠幫你梳理看過的代碼.
XDA

Ⅲ 怎樣提高閱讀源代碼的效率

1、一邊閱讀代碼一邊寫注釋。這是我用過的最好的方法,對代碼理解得更深入,看一些重要代碼或者特別難懂的代碼時挺有用。更何況,注釋也是一種文檔嘛。
2、一邊閱讀代碼一邊繪制UML。這個方法適用於類之間的關系較復雜和調用層次較深的情況,我一般都是先繪制順序圖,然後為順序圖中的類繪制關系圖。
3、通過Debug來跟蹤程序的主要執行過程,這樣就可以分清主次了,閱讀的時候更有針對性。
4、類的快速閱讀。先弄清楚它在繼承鏈中的位置,看看它的內部狀態,也就是成員變數,一般來說,類的對外介面都是對成員變數的訪問、加工、代理等,然後看看它的對外介面,也就是公有成員函數,識別核心的一個或多個函數,這時候你應該可以大概了解這個類的職責或作用了。可能這個類是某個設計模式中的一個組成部分,所以,設計模式的掌握對代碼的快速閱讀也是很有幫助的。
5、帶著問題去閱讀。比如想了解android中的消息機制,那麼看看Looper、Handler、MessegeQueue這幾個類就可以了,其他的不要去看,要不然就跑題了。

Ⅳ 如何閱讀源代碼

這樣閱讀源代碼:

1、你會懂的這些代碼是什麼意思,點擊右鍵

提示:專業人士才能看懂的

Ⅳ 怎麼閱讀spring源碼

從HttpServletBean的init()進入,再到initWebApplicationContext(),再到refresh(),再到refreshBeanFactory(),再到finishRefresh(),直到伺服器啟動成功。不知道讀了多少遍,
但是源碼的東西實在的太多了,想要完全讀懂,完全理清頭緒,還差很遠啊。所以我只重點關注了兩塊內容,就是bean的定位載入解析注冊、bean的實例化兩大塊內容,其他地方稍作了解,沒有太過深入。
整個容器的啟動流程,都在AbstractApplicationContext的refresh()的模板方法中了。

復制代碼
1 public void refresh() throws BeansException, IllegalStateException {
2 synchronized (this.startupShutdownMonitor) {
3 // Prepare this context for refreshing.
4 prepareRefresh();
5
6 // Tell the subclass to refresh the internal bean factory.
7 beanFactory = obtainFreshBeanFactory();
8
9 // Prepare the bean factory for use in this context.
10 prepareBeanFactory(beanFactory);
11
12 try {
13 // Allows post-processing of the bean factory in context subclasses.
14 postProcessBeanFactory(beanFactory);
15
16 // Invoke factory processors registered as beans in the context.
17 (beanFactory);
18
19 // Register bean processors that intercept bean creation.
20 registerBeanPostProcessors(beanFactory);
21
22 // Initialize message source for this context.
23 initMessageSource();
24
25 // Initialize event multicaster for this context.
26 ();
27
28 // Initialize other special beans in specific context subclasses.
29 onRefresh();
30
31 // Check for listener beans and register them.
32 registerListeners();
33
34 // Instantiate all remaining (non-lazy-init) singletons.
35 (beanFactory);
36
37 // Last step: publish corresponding event.
38 finishRefresh();
39 }
40
41 catch (BeansException ex) {
42 // Destroy already created singletons to avoid dangling resources.
43 destroyBeans();
44
45 // Reset 'active' flag.
46 cancelRefresh(ex);
47
48 // Propagate exception to caller.
49 throw ex;
50 }
51 }
52 }

其實,我並沒有上來就看源碼,而是先從看書開始,稍微了解,知道了一些關鍵點,關鍵流程,自己產生了一堆疑問,然後帶著疑問去讀源碼,讀著讀著,發現有些疑問就這么解決了。

Ⅵ 如何閱讀源碼包

在Eclipse查看開發包jar源碼的方法如下:
1.選擇項目,右鍵中單擊【Properties】
2.【Java Build Path】-【Configure Build Path】-【Libraries】,在下面找到如:Guava-r09.jar包,展開它,選擇【Source attachment】,單擊右邊的【Edit…】按鈕。
3.在打開的窗口中,可選擇文件(jar\zip),目錄或工作空間中的jar文件,在這里我選擇External Folder…,選擇如E:/java project/guava即可。

4.連續單擊【OK】兩次回到Eclipse工作平台即可。

有源碼,把它加到eclipse中:

方法1:直接用壓縮軟體打開相應的jar包,然後把源碼拖進去壓縮一下,最後選中工程刷新一下ok。

方法2:右擊referenced

Ⅶ 如何正確的閱讀源代碼

除了閱讀代碼以外, 沒有更好的方法. 7.在尋找bug時, 請從問題的表現形式到問題的根源來分析代碼. 不要沿著不相關的路徑(誤入歧途). 8.我們要充分利用調試器|編譯器給出的警告或輸出的符號代碼|系統調用跟蹤器|資料庫結構化查詢語言的日誌機制|包轉儲工具和Windows的消息偵查程序,
定出的bug的位置. 9.對於那些大型且組織良好的系統, 您只需要最低限度地了解它的全部功能, 就能夠對它做出修改. 10.當向系統中增加新功能時, 首先的任務就是找到實現類似特性的代碼, 將它作為待實現功能的模板. 11.從特性的功能描述到代碼的實現, 可以按照字元串消息, 或使用關鍵詞來搜索代碼. 12.在移植代碼或修改介面時, 您可以通過編譯器直接定位出問題涉及的范圍, 從而減少代碼閱讀的工作量. 13.進行重構時, 您從一個能夠正常工作的系統開始做起, 希望確保結束時系統能夠正常工作. 一套恰當的測試用例(test
case)可以幫助您滿足此項約束. 14.閱讀代碼尋找重構機會時, 先從系統的構架開始, 然後逐步細化, 能夠獲得最大的效益. 15.代碼的可重用性是一個很誘人, 但難以理解與分離, 可以試著尋找粒度更大一些的包, 甚至其他代碼. 16.在復查軟體系統時, 要注意, 系統是由很多部分組成的, 不僅僅只是執行語句. 還要注意分析以下內容:
文件和目錄結構|生成和配置過程|用戶界面和系統的文檔. 18.可以將軟體復查作為一個學習|講授|援之以手和接受幫助的機會. ++++++++++++++++++++ 第二章: 基本編程元素 ++++++++++++++++++++ 19.第一次分析一個程序時, main是一個好的起始點. 20.層疊if-else if-…-else序列可以看作是由互斥選擇項組成的選擇結構. 21.有時, 要想了解程序在某一方面的功能, 運行它可能比閱讀源代碼更為恰當. 22.在分析重要的程序時, 最好首先識別出重要的組成部分. 23.了解局部的命名約定, 利用它們來猜測變數和函數的功能用途. 24.當基於猜測修改代碼時, 您應該設計能夠驗證最初假設的過程. 這個過程可能包括用編譯器進行檢查|引入斷言|或者執行適當的測試用例. 25.理解了代碼的某一部分, 可能幫助你理解餘下的代碼. 26.解決困難的代碼要從容易的部分入手. 27.要養成遇到庫元素就去閱讀相關文檔的習慣; 這將會增強您閱讀和編寫代碼的能力. 28.代碼閱讀有許多可選擇的策略: 自底向上和自頂向下的分析|應用試探法和檢查注釋和外部文檔, 應該依據問題的需要嘗試所有這些方法. 29.for (i=0; i 30.涉及兩項不等測試(其中一項包括相等條件)的比較表達式可以看作是區間成員測試. 31.我們經常可以將表達式應用在樣本數據上, 藉以了解它的含義. 32.使用De Morgan法則簡化復雜的邏輯表達式. 33.在閱讀邏輯乘表達式時, 問題可以認為正在分析的表達式以左的表達式均為true; 在閱讀邏輯和表達式時, 類似地,

Ⅷ 為什麼以及如何閱讀源碼

對於這些問題,說到底主要是因為經驗不夠,而經驗主要從項目實踐中積累,所以招聘單位一般都會限定工作時間大於 3 年,因為這些人的項目經驗相對較豐富,項目中遇到的場景相對較多。
工作經驗的積累來自於年限與實踐,然而看源碼可以擴展我們的思路,這是變相增加我們經驗的不錯方法。雖然不能短時間內通過時間積累經驗,但是可以通過學習開源框架、開源項目來獲取。
另外進職場後一般都要先熟悉現有系統,如果有文檔還好,沒文檔的話就得自己去翻代碼研究。如果大家之前對閱讀源碼有經驗,那麼在研究新系統的代碼邏輯時就不會那麼費勁了。

Ⅸ 怎樣閱讀Linux源代碼

聽我的就是,問那麼多幹嘛,我在你身邊,你還走錯路!跟著我!不能給你幸福是我的錯,但誰讓你不幸福,我TMD去砍了他 查看文章
如何閱讀linux源代碼2007-09-01 14:04著linux的逐步普及,現在有不少人對於Linux的安裝及設置已經比較熟悉了。與Linux 的蓬勃發展相適應,想深入了解Linux的也越來越多。而要想深入了解Linux,就需要閱讀和分析linux內核的源代碼。
Linux的內核源代碼可以從很多途徑得到。一般來講,在安裝的linux系統下,/usr/src/linux目錄下的東西就是內核源代碼。另外還可以從互連網上下載,解壓縮後文件一般也都位於linux目錄下。內核源代碼有很多版本,目前最新的穩定版是2.2.14。
許多人對於閱讀Linux內核有一種恐懼感,其實大可不必。當然,象Linux內核這樣大而復雜的系統代碼,閱讀起來確實有很多困難,但是也不象想像的那麼高不可攀。只要有恆心,困難都是可以克服的。也不用擔心水平不夠的問題,事實上,有很多事情我們不都是從不會到會,邊干邊學的嗎?
任何事情做起來都需要有方法和工具。正確的方法可以指導工作,良好的工具可以事半功倍。對於Linux 內核源代碼的閱讀也同樣如此。下面我就把自己閱讀內核源代碼的一點經驗介紹一下,最後介紹Window平台下的一種閱讀工具。
對於源代碼的閱讀,要想比較順利,事先最好對源代碼的知識背景有一定的了解。對於linux內核源代碼來講,我認為,基本要求是:1、操作系統的基本知識;2、對C語言比較熟悉,最好要有匯編語言的知識和GNU C對標准C的擴展的知識的了解。另外在閱讀之前,還應該知道Linux內核源代碼的整體分布情況。我們知道現代的操作系統一般由進程管理、內存管理、文件系統、驅動程序、網路等組成。看一下Linux內 核源代碼就可看出,各個目錄大致對應了這些方面。Linux內核源代碼的組成如下(假設相對於linux目錄):
arch 這個子目錄包含了此核心源代碼所支持的硬體體系結構相關的核心代碼。如對於X86平台就是i386。
include 這個目錄包括了核心的大多數include文件。另外對於每種支持的體系結構分別有一個子目錄。
init 此目錄包含核心啟動代碼。
mm 此目錄包含了所有的內存管理代碼。與具體硬體體系結構相關的內存管理代碼位於arch/*/mm目錄下,如對應於X86的就是arch/i386/mm/fault.c 。
drivers 系統中所有的設備驅動都位於此目錄中。它又進一步劃分成幾類設備驅動,每一種也有對應的子目錄,如音效卡的驅動對應於drivers/sound。
ipc 此目錄包含了核心的進程間通訊代碼。
moles 此目錄包含已建好可動態載入的模塊。

void function(e,t){for(var n=t.getElementsByTagName("img"),a=+new Date,i=[],o=function(){this.removeEventListener&&this.removeEventListener("load",o,!1),i.push({img:this,time:+new Date})},s=0;s< n.length;s++)!function(){var e=n[s];e.addEventListener?!e.complete&&e.addEventListener("load",o,!1):e.attachEvent&&e.attachEvent("onreadystatechange",function(){"complete"==e.readyState&&o.call(e,o)})}();alog("speed.set",{fsItems:i,fs:a})}(window,document);

fs Linux支持的文件系統代碼。不同的文件系統有不同的子目錄對應,如ext2文件系統對應的就是ext2子目錄。
kernel 主要核心代碼。同時與處理器結構相關代碼都放在arch/*/kernel目錄下。
net 核心的網路部分代碼。裡面的每個子目錄對應於網路的一個方面。
lib 此目錄包含了核心的庫代碼。與處理器結構相關庫代碼被放在arch/*/lib/目錄下。
scripts此目錄包含用於配置核心的腳本文件。
Documentation 此目錄是一些文檔,起參考作用。
清楚了源代碼的結構組成後就可以著手閱讀。對於閱讀方法或者說順序,有所謂的縱向與橫向之分。所謂縱向就是順著程序的執行順序逐步進行;所謂橫向,就是分模塊進行。其實他們之間不是絕對的,而是經常結合在一起進行。對於Linux源代碼來講,啟動的代碼就可以順著linux的啟動順序一步一步來,它的大致流程如下(以X86平台為例):
./larch/i386/boot/bootSect.S-->./larch/i386/boot/setup.S-->./larch/i386/kernel/head.S-->./init/main.c中的start_kernel()。而對於象內存管理等部分,則可以單獨拿出來進行閱讀分析。我的體會是:開始最好按順序閱讀啟動代碼,然後進行專題閱讀,如進程部分,內存管理部分等。在每個功能函數內部應該一步步來。實際上這是一個反復的過程,不可能讀一遍就理解。
俗話說:「工欲善其事,必先利其器」。 閱讀象Linux核心代碼這樣的復雜程序令人望而生畏。它象一個越滾越大的雪球,閱讀核心某個部分經常要用到好幾個其他的相關文件,不久你將會忘記你原來在干什麼。所以沒有一個好的工具是不行的。由於大部分愛好者對於Window平台比較熟悉,並且還是常用Window系列平台,所以在此我介紹一個Window下的一個工具軟體:Source Insight。這是一個有30天免費期的軟體,可以從www.sourcedyn.com下載。安裝非常簡單,和別的安裝一樣,雙擊安裝文件名,然後按提示進行就可以了。安裝完成後,就可啟動該程序。這個軟體使用起來非常簡單,是一個閱讀源代碼的好工具。它的使用簡單介紹如下:先選擇Project菜單下的new,新建一個工程,輸入工程名,接著要求你把欲讀的源代碼加入(可以整個目錄加)後,該軟體就分析你所加的源代碼。分析完後,就可以進行閱讀了。對於打開的閱讀文件,如果想看某一變數的定義,先把游標定位於該變數,然後點擊工具條上的相應選項,該變數的定義就顯示出來。對於函數的定義與實現也可以同樣操作。別的功能在這里就不說了,有興趣的朋友可以裝一個Source Insight,那樣你閱讀源代碼的效率會有很大提高的。怎麼樣,試試吧!

Ⅹ 怎麼閱讀Spring源碼

學習源碼是一件非常耗時費力的事情,需要有足夠的時間和持久的耐心,下面是我閱讀郝佳老師的《Spring源碼深度解析》所做的記錄,書中以Spring3.2講解,使用jdk1.7。

准備工作
1. 安裝github:現在spring源代碼都在github管理,所以首先需要下載githup,下;
2. 安裝gradle構建工具: 下載完後進行解壓到任意盤符,然後增加環境變數GRADLE_HOME,並在環境變數bin中增加%GRADLE_HOME%/bin,打開DOS窗口,運行gradle -v,出現版本號等信息,表示安裝成功;
3. 下載Spring源碼:首先打開git shell,切換到你的工作目錄,然後輸入以下命令:git clone git://github.com/SpringSource/Spring-framework.git,後面一串是源碼下載地址。大概半小時的樣子,就可以下載完成,這時候在你的工作目錄中就會出現Spring-framework的目錄,裡面有Spring各組件的源碼包;

4. 構建導入:下載下來的代碼不能直接導入Eclipse,要先轉換成Eclipse能讀取的形式。因為所有組件都會依賴spring-core,所有我們首先要轉換Spring-core工程,在命令窗口切換到Spring-core工程,運行gradle cleanidea eclipse命令,我們會看到開始下載工程所依賴的jar包,幾分鍾後執行完畢,再來看Spring-core文件夾,多了.classpath、.project等文件,這是Eclipse工程所必須的,然後可以把他導入到eclipse。因為大部分Spring組件都會用到 spring-beans、spring-context、spring-aop,而他們又依賴spring-expression、spring-instrument,所以我們乾脆先把這些工程都進行轉換並導入eclipse。

熱點內容
資料庫設計模板 發布:2024-11-15 00:47:25 瀏覽:825
編程的悟性 發布:2024-11-15 00:47:24 瀏覽:733
主流可編譯語言 發布:2024-11-15 00:42:23 瀏覽:729
excel緩存清除 發布:2024-11-15 00:39:53 瀏覽:486
機械鍵盤可編程 發布:2024-11-15 00:39:09 瀏覽:912
php判斷字元開頭 發布:2024-11-15 00:35:33 瀏覽:507
網易蘋果游戲怎麼轉移到安卓 發布:2024-11-15 00:07:52 瀏覽:270
win7php環境搭建 發布:2024-11-15 00:06:55 瀏覽:17
erpjava 發布:2024-11-14 23:52:23 瀏覽:253
電腦版地平線四怎麼連上伺服器 發布:2024-11-14 23:46:42 瀏覽:472