晚上在 V2 的 Java 的節點看到有人問 Java Web 書籍推薦。我這半年多的時間,也從別的方向開始轉向 Java 服務端開發,所以,我來說下我的學習路線,幫助有需要的朋友把半只腳踏進 Spring 大門。
本文所描述的路線,適合有其他面向對象語言編程經驗,具備數據結構、算法、網絡、數據庫、設計模式、Linux 使用經驗的人,如果你沒有基礎,這篇文章可能不適合你。
工欲善其事必先利其器
電腦系統推薦使用 *nix ,不論是 Linux 還是 macOS 都有強大的工具能讓你學習的過程得心應手,Windows 系統也不是不可以,但 Windows 系統的終端個人很不喜歡。
IDE 推薦 IntelliJ IDEA,使用 Eclipse 也是可以的,不過現在越來越多的人開始使用 IntelliJ IDEA。
學習的過程中你會遇到各種各樣的問題,無腦推薦 Google,鑒於目前國內的網絡環境,你需要有利器能夠訪問 Google(比如 AT&T 漫游,誤)。
Java SE
Java 基礎有 Java編程思想、Java核心技術、Head First Java 等,我選擇的是 Java編程思想(第4版),第 22 章是講 GUI 的,可以不看。另外,Java 核心技術(卷1、卷2)中講了 Java 編程思想沒有涉及的網絡及 JDBC。
現在你有 Java 基礎了,但是現在 Java 發展到 1.9 的版本了,怎么辦?
Java編程思想(第4版) 基本覆蓋了 1.5 版本的內容,1.6、1.7 版本的更新,可以通過網上查資料來學習。1.8 版本有比較大的更新,建議買本書系統學習,我使用的是 Java 8 實戰。
好了,現在你會寫 Java 代碼了,但是 .java 文件如何成了 .class 文件,.class 文件長成什么樣,又如何被加載到虛擬機中執行等等若干問題,難道你不好奇。這里推薦深入理解Java虛擬機(第2版)。
隨着時間流逝,你寫了不少代碼。但條條大路通羅馬、再加上語言本身的語言負擔,你或許會寫出不那么優雅的代碼,你需要前輩的經驗來寫清晰、健壯、高效的代碼。Effective Java 就是這么一本書。當然,還有重構、代碼整潔之道這樣的書,但這里只討論 Java 。
Web
強烈不推薦上來直接上框架,你需要先了解 JSP、Servlet,尤其是 Servlet。這里我使用的是 Head First Servlets & JSP,Servlet與JSP核心編程這本書網上評價也不錯。
好了,現在來說企業中的框架該怎么學。最最最重要的是,學的過程中一定要動手。
萬事開頭難。我最開始接觸的時候,也是不知道如何開始框架的學習,在網絡找了很多方法,浪費了不少時間,記住只有適合自己的才是最好的。在開始介紹前,再重復一遍,一動手嘗試,二大膽猜測並驗證。
1. Spring
在我剛開始的時候,很多人推薦直接讀官方文檔,經過驗證,這種方法不適合初學者,或者說不適合我。
這里我使用的是Spring實戰,學 Spring 一定要理解依賴注入(你說控制反轉也行)和 AOP,跟着這本書敲,書中關於配置的東西一定要看仔細、理解好,不然配錯了,自己找起來可能很麻煩。
2. Spring 與 MyBatis、Redis 等其他框架的整合。
MyBatis 推薦官方文檔,然后找個 demo 做一下,自己再練習練習就可以了。
與 Spring 整合的時候參考文檔,可以很簡單的完成。
Redis 等其他框架的整合參考 Spring 實戰,或者找資料都是可以的。
其他
要不要看視頻這個事,我的觀點是能不看就不看,但不要因噎廢食。慕課網上有 SSM 框架的視頻,對於這個路徑,我的經驗是直接跳過前兩個,即戰斗伊始--Spring和轉戰陣地--SpringMVC,這兩部分看 Spring實戰就可以了,后邊兩個可以看看。
注意,針對這個慕課網這個視頻我這里解釋的是上文的你都做了,且自己寫的服務能夠正常運行。
剛接觸框架配置很容易出錯,出錯的時候一定要耐心看輸出的信息,有的很簡單可能是手誤,有的可能可能需要你對框架有些理解,所以 Just Google It。
手動倒入 jar 包費時費力,上 maven 啊。
好了,你的服務跑起來了,你的半只腳已經進入了 Spring 的大門,請繼續加油。
我在 Github 上有一個基於 SSM(Spring、Spring MVC、MyBatis)的小項目,部分學習內容會在該項目中使用。
該項目 Spring 相關配置,完全使用基於注解的方式。博主在剛接觸各種配置的時候,繞了一些彎路。
對於剛接觸這些框架的朋友,該項目或許會有些許幫助。如果在理解該項目時或參考時遇到任何問題,歡迎通過你能找到的任何方式聯系我,非常樂意共同學習。
項目地址為:spittr 。
文中提高了慕課網,如果你喜歡 xml 配置的方式,可參考另外一個項目 seckill 。該項目是博主在慕課網上學習該課程的源代碼,項目中沒有完全采用基於注解的方式,相比而言,該項目在配置方面更加老道。
我寫完了,如果你有什么不明白的可以發郵件給我。如果文中有不合適的地方,也請指正。我的郵箱地址是:shixj.cs@foxmail.com。