Spring Boot要怎么學?要學哪些東西?要不要先學SSM?說說看法
可能很多剛接觸 Spring Boot 的小伙伴都會有這樣的疑問,Spring Boot 要怎么學,要不要先學 SSM?今天結合自己的經(jīng)驗,和大家說一說我的看法,也順便推薦幾個 Spring Boot 學習資料。
1.Spring Boot 是什么
我們剛開始學習 JavaWeb 的時候,使用 Servlet/JSP 做開發(fā),一個接口搞一個 Servlet ,很頭大,后來我們通過隱藏域或者反射等方式,可以減少 Servlet 的創(chuàng)建,但是依然不方便。
再后來,我們引入 Struts2/SpringMVC 這一類的框架,來簡化我們的開發(fā) ,和 Servlet/JSP 相比,引入框架之后,生產(chǎn)力確實提高了不少,但是用久了,又發(fā)現(xiàn)了新的問題,即配置繁瑣易出錯,要做一個新項目,先搭建環(huán)境,環(huán)境搭建來搭建去,就是那幾行配置,不同的項目,可能就是包不同,其他大部分的配置都是一樣的。
Java 總是被人詬病配置繁瑣代碼量巨大,這就是其中一個表現(xiàn)。那么怎么辦?Spring Boot 應運而生,Spring Boot 是 Pivotal 團隊在 2013 年開始研發(fā)的一個基于 Spring 的全新框架,試圖將 Spring 中臃腫的配置進行簡化,使 Java 開發(fā)更加輕量與快速,這個框架非常活躍,官方也非常重視。
Spring Boot 主要提供了如下功能:
- 為所有基于 Spring 的 Java 開發(fā)提供方便快捷的入門體驗。
- 開箱即用,有自己自定義的配置就是用自己的,沒有就使用官方提供的默認的。
- 提供了一系列通用的非功能性的功能,例如嵌入式服務器、安全管理、健康檢測等。
- 絕對沒有代碼生成,也不需要XML配置。
Spring Boot 的出現(xiàn)讓 Java 開發(fā)又回歸簡單,因為確確實實解決了開發(fā)中的痛點,因此這個技術得到了非常廣泛的使用,大概從 2017 年年初開始,Spring Boot 基本上面試必問,現(xiàn)在流行的 Spring Cloud 微服務也是基于 Spring Boot,因此,所有的 Java 工程師都有必要掌握好 Spring Boot。
從 Spring Boot 誕生的過程中,我們可以看到:
- Spring Boot 并非另起爐灶,而是在現(xiàn)有的 Spring 框架的基礎上整出來的,它把 Spring 中繁瑣的配置進行了簡化。
- Spring Boot 降低了 Spring 家族的使用門檻,使新手更易上手 Spring 框架。
既然 Spring Boot 不是另起爐灶,那么 Spring Boot 學習要不要跳過 SSM 呢?聽松哥來分析。
2.要不要跳過 SSM
這是很多人問我的一個問題,我的建議是:「不要」。
Spring Boot 基于 Spring,簡單且容易上手,很多人想當然的跳過 SSM 直接上 Spring Boot。但是當我們細究 Spring Boot 中的自動化配置、條件注解、Java 配置等東西時,實在找不出太多新鮮玩意,Java 配置是 Spring3 開始提供的,條件注解 也是 Spring 中的東西,很多很多,都是 Spring 中就有的,只不過這些東西在 Spring Boot 時代大放異彩。
也就是說,即使你跳過了 SSM 直接去學習 Spring Boot,實際上還是在學習 Spring 中的東西,那既然這樣,我們還不如坐下來,老老實實把 Spring 過一遍。
各個領域的開發(fā)工程師其實都會面臨類似的問題,學習了一些優(yōu)秀的封裝框架之后,還有沒有必要去學習底層?當然有必要!因為底層的東西可以讓你深刻的理解你目前用的這個東西,也能讓你在出問題時快速解決掉問題。
其實無論你想搞什么技術,都要有牢固的基礎知識,這些牢固的基礎知識就像肥沃的土壤,可以孕育出各種不同技術方向的牛人,基礎掌握好了,學什么框架都快。今天你跳過 SSM 直接學了 Spring Boot,假如有一天 Spring Boot 不行了,Pivotal 團隊又基于 Spring 框架搞了一個新的框架出來,那你是不是又要去學一遍?但是如果你一開始就掌握了 Spring 的各種用法,無論基于它搞出來什么樣的框架,你都能快速上手。更進一步,如果你研究透了 Spring 中的 AOP、Ioc/DI,你會發(fā)現(xiàn)很多框架大同小異,核心思想就是這些東西,那么你在學習 Spring 之外的框架,就會容易很多。
「如果你對 SSM 還不太熟悉的話,可以在公號后臺分別回復 spring、springmvc、mybatis 獲取松哥手敲 5 萬余字的干貨教程。」
3.都要學哪些
那么 Spring Boot 學習都要學哪些東西呢?我這里列舉了一個進階路線:
- 最基礎的當然是 Spring/SpringMVC 相關的東西了。
- 搭配各種頁面模版的使用,例如 Jsp/Thymeleaf/Freemarker/Groovy Templates 等。
- 和各種 SQL 數(shù)據(jù)庫的整合,以及一些常見的數(shù)據(jù)持久化框架,例如 JdbcTemplate、MyBatis、Jpa 等。
- 和各種 NoSQL 數(shù)據(jù)庫的整合,例如 Redis、MongoDB、Elasticsearch 等。
- 搭配安全管理相關的知識點,例如 Spring Security、Shiro 等。
- 緩存的使用,例如 JCache、Ehcache 等。
- 和消息中間件的搭配整合,如 ActiveMQ、RabbitMQ、Kafka 等。
- 數(shù)據(jù)校驗/定時任務/郵件發(fā)送等。
- 各種監(jiān)控的使用。
- 結合 WebSocket 的使用。
- Spring Cloud 中相關組件。
- ...
上面這些只是我列出來的一些比較常見的技術點,每個技術點都還可以延伸出很多其他的東西,大家可以結合自己的情況,按照順序一個一個來學,這里邊還涉及到很多第三方的框架,例如 Redis、MongoDB、RabbitMQ 等,Spring Boot 的出現(xiàn)只是讓這些組件在和 Spring 家族的產(chǎn)品整合時變得更加方便,但是并不會簡化這些組件原本的用法,所以,該學 Redis、該學 MongoDB、該學 RabbitMQ 等等,還是一個不能少。以 Redis 為例,學會了 Redis,學會了 Spring 整合 Redis,再回過頭來看 Spring Boot 整合 Redis,那簡直太 easy 了(「大家在公眾號后臺回復 redis,有松哥手敲的 redis 教程」)。
當然,學習 Spring Boot 最終我們還是奔著快速開發(fā)和微服務去的,所以,像 Docker、Spring Cloud 等技術,也是需要去了解一下的。
4.怎么學
Spring Boot 發(fā)展到今天,網(wǎng)上的資料和圖書現(xiàn)在是越來越多了。在看資料學習的同時,大家也要留意以下幾個點:
- 多看源碼。不同于其他全新的框架源碼你可能會看懵了,由于 Spring Boot 是基于 Spring 的,所以只要你 Spring 基礎扎實,看 Spring Boot 源碼可以說是毫無壓力。如果看 Spring Boot 源碼覺得有壓力,那可能你 Spring 基礎不牢靠,這個時候不妨放下 Spring Boot,去復習下 Spring。
2. 每當學會 Spring Boot 中的一個知識點,不妨想想這個功能在 Spring 框架中要如何使用,如何配置,兩邊都搞懂了,互相印證,加深對一個知識點的理解。
3. 多多關注 Spring Boot 的發(fā)展動態(tài)。不同于傳統(tǒng)的框架可能一年更新一兩次,Spring Boot 更新非常頻繁,二次每次更新都會帶來一些好玩的東西,可能會有新的 API 加入進來,也可能會有舊的 API 失效,變化大,因此多多關注,避免掉坑。
最后,我這里給大家列舉幾個我自己經(jīng)常關注的幾個資源。
4.1 官方文檔
老實說,Spring Boot 的官方文檔是我接觸的所有官方文檔中最條理清晰淺顯易懂的,大家做開發(fā),多多少少都接觸過一些第三方的開放平臺,很多平臺的文檔真是讓人忍不住想吐槽,框架都做出來了,認認真真寫個文檔有那么難么?
不過 Spring Boot 的官方文檔可以算是非常非常友好了。雖然是英文的,但是實際上對英文要求并不高,連讀帶猜,其實很容易明白它的含義,我一般對 Spring Boot 中某個知識點有疑問的時候,都是首選官方文檔,當前最新版的官方文檔地址是:
- https://docs.spring.io/spring-boot/docs/2.2.4.RELEASE/reference/html
當然,如果你嫌官方文檔打開慢,松哥也幫你下載好了最新版的 pdf,公眾號后臺回復 springboot2.2.4 可以獲取。
4.2 Spring 官方博客
每次 Spring 或者 Spring Boot 發(fā)新版本,松哥都會去看一下新版本有哪些好玩的東西,增加了哪些內(nèi)容。我不可能把源碼讀一遍然后總結出來它的變化,那一般是如何獲取權威的第一手信息呢?關注 Spring 官方博客即可。
打開 Spring 官網(wǎng),在頂部菜單里有一個選項就是 Blog,關于 Spring 家族產(chǎn)品的任何更新計劃,更新結果,都會在這里通知到大家。
松哥也推薦大家多多關注這個 Blog,一方面能夠及時接收到一手信息,另一方面還能提高英語,一舉兩得。宅在家,泡一壺茶,細細的品一品這個網(wǎng)站,真的蠻不錯。
Blog 地址:
- https://spring.io/blog
4.3 中文資料
說到中文資料,就不得不說松哥自己的在線教程和離線 pdf 文檔了。手敲了 274 頁教程,囊括了 Spring Boot2 常見的各種用法,即有離線的 pdf 供大家下載,也有在線的學習網(wǎng)站,這就是滿滿的誠意,還沒下載 pdf 的小伙伴不要錯過。
在線教程地址:
- http://springboot.javaboy.org
離線 pdf 下載文檔,在公眾號后臺回復 springboot 獲取百度網(wǎng)盤地址。
4.4 學習案例
除了這些文字性的東西之外,一些在線案例也至關重要。這里給大家推薦兩個倉庫,這兩個倉庫中的所有案例都是基于 Spring Boot2 來做的。
首先就是我公眾號上文章的配套案例:
GitHub 地址:
Gitee 地址:
這個倉庫中的大部分案例都是針對 Spring Boot 的,而且有一個好處就是這些案例都有對應的講解文章,每個案例都對應一個文章,豈不美哉。
另一個倉庫就是我整理的比較完善的一個倉庫,但是就沒有對應的講解文章了:
GitHub 地址:
Gitee 地址:
5.小結
資料貴精不貴多,關鍵是要動手去學。大學時候,有的同學熱衷于收集各種資料,電腦硬盤塞得滿滿的,但是就是不學,這些資料再多也沒有用。