導航:首頁 > 源碼編譯 > spring源碼深度剖析

spring源碼深度剖析

發布時間:2025-01-05 09:28:13

① 怎麼閱讀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。

② 書單推薦:成為java頂尖程序員 ,看這11本書就夠了

學習的最好途徑就是看書。看書有兩點好處:看完書之後再次提升自我的最好途徑是看一些相關的好博文。一本書往往有好幾百頁,好的博文是自己看書學習之後的一些總結和提煉,對於梳理學習的內容很有好處。接下來,我將推薦給Java程序員們一些好書。

一、《深入理解Java虛擬機:JVM高級特性與最佳實踐》

如果你不滿足於做一個只會寫if…else…的Java程序員,而是希望更進一步,這本《深入理解Java虛擬機:JVM高級特性與最佳實踐》是你的不二之選。它可以幫助你了解Java代碼的底層運行機制,定位性能問題,對整個系統進行性能調優,解決各種線上線下的問題,甚至為自己的項目量身定做一款適合自己項目的虛擬機。這本書作者是周志明,是國內寫得最好的有關Java虛擬機的書籍之一。我至少已經看了這本書5遍,因為它對於Java虛擬機的講解深入淺出,適合各個層次的讀者。

二、《HotSpot實戰》

所有Java虛擬機都是遵循Java虛擬機規范的,市面上的Java虛擬機有幾十款,《深入理解Java虛擬機:JVM高級特性與最佳實踐》一書講解的虛擬機並不針對某種特定的虛擬機,而是從Java虛擬機規范的角度來講解Java虛擬機。而我們平時使用的乃至商用的大多數Java虛擬機都是Sun公司的HotSpot,這本書能夠幫助你深入了解HotSpot虛擬機的實現細節。作者是陳濤,由於HotSpot的源碼都是C/C++寫的,所以要求讀者有非常好的C/C++基礎。對於不太熟悉C/C++的朋友,看這本書可能幫助不是很大。

三、《Java並發編程實戰》

這是一本常常被列入Java程序員必讀十大書籍排行榜前幾位的書,不過個人不是很推薦這本書。文字多代碼少,講解多實踐少。這本書前前後後我也看了兩遍左右,感覺很枯燥。不過作為一本位於排行榜前幾名的書,還是值得推薦給大家的。

四、《java多線程編程核心技術》

這本書是我大力推薦的,我的個人博客裡面二十多篇的多線程博文都是基於此書,並且在這本書的基礎上進行提煉和總結而寫出來的。此書大篇幅的代碼+小篇幅的精講解,適合中國人偏向實用主義的寫作風格。本書關於線程安全、synchronized、Reentrant、Timer等等都用詳細的代碼進行了講解,非常有實踐價值。有興趣的朋友跟著這本書敲代碼、運行、思考,三步走,對於多線程的使用與理解一定會進幾大步。

五、《Effective Java中文版》

這是唯一一本我沒有買的書。這本書的知名度以及其作者的來頭,我相信這一定是一本值得一看的好書。初識這本書,是在我的博文Java代碼優化(長期更新)裡面,底下評論的時候有朋友提到了這本書,當時我說要去買,不過這兩個月一直都沒時間去逛書店,甚是遺憾,之後肯定會找時間去買這本書的。這本書的作者是Joshua Bloch,他是谷歌的首席架構師,屬於超級技術大牛級別。

六、《深入分析Java Web技術內幕》

這本書非常全,HTTP、DNS、CDN、靜態化、Jetty、Tomcat、Servlet、Spring、MyBatis等等,什麼都有,涉及知識面非常廣。不過,盡管每個知識點的篇幅都不多,但是重點都基本講到了,是一本讓人真正有收獲的書。如果想進一步了解這些技術的技術內幕,就要自己去買相關書籍或者自己上網查資料了。

七、《大型網站技術架構 核心原理與案例分析》

這本書是屌、很屌、非常屌級別的。這本書詳細講解了分布式系統的知識點,多看幾遍,對分布式的理解一定會加深不少。而且裡面不僅僅是分布式的知識,還非常接地氣地寫了如何做一個好的架構師,這不僅僅是寫給想做架構師的讀者看的,就是給讀者一些建議,如何更好地提出意見、如何更讓別人關注你的聲音、如何看到他人的優點,入木三分,讓人獲益匪淺。

八、《大型網站系統與Java中間件實踐》

這本書的部分內容和上面一本《大型網站技術架構 核心原理與案例分析》有所重合,像分布式系統的演化、CDN、CAP理論和BASE理論等等。適合對分布式系統比較熟悉並且想要往中間件方面有一定研究的讀者。本書要突出的重點是中間件三個字,中間件是分布式系統中一個非常重要的東西,其最重要的作用應該就是解耦,降低模塊與模塊之間的強依賴,不同的模塊之間的依賴度降低,便可以各自獨立地開發自己的功能。

九、《從Paxos到ZooKeeper 分布式一致性原理與實踐》

這本書是從分布式系統基本理論開始講起,講到Paxos演算法,最後慢慢引入到Zookeeper,循序漸進。適合有志向做一個出色的大型網站架構師、公司的技術總監之類的朋友。如果網友們所在的公司在使用Zookeeper,並且你又對Zookeeper感興趣想要研究一下它的原理的,這本書將是不二之選。

十、《MySQL5.6從零開始學》

作為一名Java程序員,學習資料庫是必須掌握的一門知識。這本書講解MySQL5.6的全面知識點,內容很細致、很全面,適合Java程序員學習。MySQL相比Oracle更輕量級、更小、安裝和卸載更方便,因此學習起來更為方便。並且,隨著2009年阿里巴巴去IOE的運動,MySQL成為了互聯網公司使用的主流資料庫之一。

十一、《Spring源碼深度解析》

Spring框架做得太好了,功能太強大了,這導致一旦你的程序使用Spring,出了問題,可能需要上網查資料或者問別人解決。研讀Spring的源代碼不失為一種很好的學習方法,這有很多好處:理解框架內部的實現之後,可以主動去解決問題;Spring框架內部實現用到了很多設計模式,可以提高你寫代碼和理解設計模式的能力;研究Spring框架可以大大增強你讀代碼的能力。總的來說,我推薦《Spring源碼深度解析》一書,這本書在近400頁的篇幅中盡量去講解Spring源代碼是如何實現的,有助於對Spring的實現有更深度的理解。

以上就是我推薦給Java開發者們的一些值得一看的好書。對於Java基礎知識的學習,我提兩點建議:多寫多敲代碼,好的代碼與扎實的基礎知識一定是實踐出來的;可以去尚學堂下載一下馬士兵的視頻來學習一下Java基礎,還挺不錯的。

③ spring源碼深度解析這本書怎麼樣

您好,希望以下回答能幫助您
《SPRING技術內幕——深入解析SPRING架構與設計原理》

該書講了spring的ioc容器原理,在xml的spring配置文件中,對象是如何解析並生成的。
spring的aop,面向切面編程。這兩塊是比較重要的,屬於核心部分。
其他的如spring mvc ,spring jdbc與hibernate,ibatise集成,spring事務,spring security,
spring 任務調度都有介紹。
大體來說,屬於跟著代碼走向,一個類一個類介紹了一下。其實代碼都是有英文注釋的。
跟著作都的思路看過來也還是可以的,最好是對照類圖分析。
如您還有疑問可繼續追問。

④ 怎麼閱讀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 }

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

閱讀全文

與spring源碼深度剖析相關的資料

熱點內容
pdf文件轉word文件怎麼打開 瀏覽:808
許可權的文件夾圖標 瀏覽:827
智能加密門卡怎麼弄在手機 瀏覽:501
程序員改需求 瀏覽:111
android環信圖片 瀏覽:134
ees演算法具有什麼特點 瀏覽:768
安卓手機如何弄戀愛日記 瀏覽:624
android連接webservice 瀏覽:221
對於簡單的加密和編碼方法 瀏覽:334
XC8編譯結果不同 瀏覽:217
氣體隔膜壓縮機 瀏覽:587
新的電腦文件夾打開為什麼是空的 瀏覽:821
製冷壓縮機壽命 瀏覽:734
androidlistview按下顏色 瀏覽:194
單片機實驗報告蜂鳴器 瀏覽:10
農業量地用什麼app 瀏覽:11
python構造時間 瀏覽:843
頁面加密不能復制 瀏覽:680
什麼app可以看美劇無刪美劇 瀏覽:845
mom解壓包下載 瀏覽:270