SpringBoot要怎麼學?要學哪些東西?要不要先學SSM?鬆哥說說看法

NO IMAGE

可能很多剛接觸 Spring Boot 的小夥伴都會有這樣的疑問,Spring Boot 要怎麼學,要不要先學 SSM?今天結合自己的經驗,和大家說一說我的看法,也順便推薦幾個 Spring Boot 學習資料。

1.Spring Boot 是什麼

我們剛開始學習 JavaWeb 的時候,使用 Servlet/JSP 做開發,一個接口搞一個 Servlet ,很頭大,後來我們通過隱藏域或者反射等方式,可以減少 Servlet 的創建,但是依然不方便。

再後來,我們引入 Struts2/SpringMVC 這一類的框架,來簡化我們的開發 ,和 Servlet/JSP 相比,引入框架之後,生產力確實提高了不少,但是用久了,又發現了新的問題,即配置繁瑣易出錯,要做一個新項目,先搭建環境,環境搭建來搭建去,就是那幾行配置,不同的項目,可能就是包不同,其他大部分的配置都是一樣的。

Java 總是被人詬病配置繁瑣代碼量巨大,這就是其中一個表現。那麼怎麼辦?Spring Boot 應運而生,Spring Boot 是 Pivotal 團隊在 2013 年開始研發的一個基於 Spring 的全新框架,試圖將 Spring 中臃腫的配置進行簡化,使 Java 開發更加輕量與快速,這個框架非常活躍,官方也非常重視。

Spring Boot 主要提供瞭如下功能:

  1. 為所有基於 Spring 的 Java 開發提供方便快捷的入門體驗。
  2. 開箱即用,有自己自定義的配置就是用自己的,沒有就使用官方提供的默認的。
  3. 提供了一系列通用的非功能性的功能,例如嵌入式服務器、安全管理、健康檢測等。
  4. 絕對沒有代碼生成,也不需要XML配置。

Spring Boot 的出現讓 Java 開發又迴歸簡單,因為確確實實解決了開發中的痛點,因此這個技術得到了非常廣泛的使用,大概從 2017 年年初開始,Spring Boot 基本上面試必問,現在流行的 Spring Cloud 微服務也是基於 Spring Boot,因此,所有的 Java 工程師都有必要掌握好 Spring Boot。

從 Spring Boot 誕生的過程中,我們可以看到:

  1. Spring Boot 並非另起爐灶,而是在現有的 Spring 框架的基礎上整出來的,它把 Spring 中繁瑣的配置進行了簡化。
  2. 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 過一遍。

各個領域的開發工程師其實都會面臨類似的問題,學習了一些優秀的封裝框架之後,還有沒有必要去學習底層?當然有必要!因為底層的東西可以讓你深刻的理解你目前用的這個東西,也能讓你在出問題時快速解決掉問題。

其實無論你想搞什麼技術,都要有牢固的基礎知識,這些牢固的基礎知識就像肥沃的土壤,可以孕育出各種不同技術方向的牛人,基礎掌握好了,學什麼框架都快。今天你跳過 SSM 直接學了 Spring Boot,假如有一天 Spring Boot 不行了,Pivotal 團隊又基於 Spring 框架搞了一個新的框架出來,那你是不是又要去學一遍?但是如果你一開始就掌握了 Spring 的各種用法,無論基於它搞出來什麼樣的框架,你都能快速上手。更進一步,如果你研究透了 Spring 中的 AOP、Ioc/DI,你會發現很多框架大同小異,核心思想就是這些東西,那麼你在學習 Spring 之外的框架,就會容易很多。

如果你對 SSM 還不太熟悉的話,可以在公號後臺分別回覆 springspringmvcmybatis 獲取鬆哥手敲 5 萬餘字的乾貨教程。

3.都要學哪些

那麼 Spring Boot 學習都要學哪些東西呢?我這裡列舉了一個進階路線:

  1. 最基礎的當然是 Spring/SpringMVC 相關的東西了。
  2. 搭配各種頁面模版的使用,例如 Jsp/Thymeleaf/Freemarker/Groovy Templates 等。
  3. 和各種 SQL 數據庫的整合,以及一些常見的數據持久化框架,例如 JdbcTemplate、MyBatis、Jpa 等。
  4. 和各種 NoSQL 數據庫的整合,例如 Redis、MongoDB、Elasticsearch 等。
  5. 搭配安全管理相關的知識點,例如 Spring Security、Shiro 等。
  6. 緩存的使用,例如 JCache、Ehcache 等。
  7. 和消息中間件的搭配整合,如 ActiveMQ、RabbitMQ、Kafka 等。
  8. 數據校驗/定時任務/郵件發送等。
  9. 各種監控的使用。
  10. 結合 WebSocket 的使用。
  11. Spring Cloud 中相關組件。

上面這些只是我列出來的一些比較常見的技術點,每個技術點都還可以延伸出很多其他的東西,大家可以結合自己的情況,按照順序一個一個來學,這裡邊還涉及到很多第三方的框架,例如 Redis、MongoDB、RabbitMQ 等,Spring Boot 的出現只是讓這些組件在和 Spring 家族的產品整合時變得更加方便,但是並不會簡化這些組件原本的用法,所以,該學 Redis、該學 MongoDB、該學 RabbitMQ 等等,還是一個不能少。以 Redis 為例,學會了 Redis,學會了 Spring 整合 Redis,再回過頭來看 Spring Boot 整合 Redis,那簡直太 easy 了(大家在公眾號後臺回覆 redis,有鬆哥手敲的 redis 教程)。

當然,學習 Spring Boot 最終我們還是奔著快速開發和微服務去的,所以,像 Docker、Spring Cloud 等技術,也是需要去了解一下的。

4.怎麼學

Spring Boot 發展到今天,網上的資料和圖書現在是越來越多了。在看資料學習的同時,大家也要留意以下幾個點:

  1. 多看源碼。不同於其他全新的框架源碼你可能會看懵了,由於 Spring Boot 是基於 Spring 的,所以只要你 Spring 基礎紮實,看 Spring Boot 源碼可以說是毫無壓力。如果看 Spring Boot 源碼覺得有壓力,那可能你 Spring 基礎不牢靠,這個時候不妨放下 Spring Boot,去複習下 Spring。
  2. 每當學會 Spring Boot 中的一個知識點,不妨想想這個功能在 Spring 框架中要如何使用,如何配置,兩邊都搞懂了,互相印證,加深對一個知識點的理解。
  3. 多多關注 Spring Boot 的發展動態。不同於傳統的框架可能一年更新一兩次,Spring Boot 更新非常頻繁,二次每次更新都會帶來一些好玩的東西,可能會有新的 API 加入進來,也可能會有舊的 API 失效,變化大,因此多多關注,避免掉坑。

最後,我這裡給大家列舉幾個我自己經常關注的幾個資源。

4.1 官方文檔

老實說,Spring Boot 的官方文檔是我接觸的所有官方文檔中最條理清晰淺顯易懂的,大家做開發,多多少少都接觸過一些第三方的開放平臺,很多平臺的文檔真是讓人忍不住想吐槽,框架都做出來了,認認真真寫個文檔有那麼難麼?

不過 Spring Boot 的官方文檔可以算是非常非常友好了。雖然是英文的,但是實際上對英文要求並不高,連讀帶猜,其實很容易明白它的含義,我一般對 Spring Boot 中某個知識點有疑問的時候,都是首選官方文檔,當前最新版的官方文檔地址是:

當然,如果你嫌官方文檔打開慢,鬆哥也幫你下載好了最新版的 pdf,公眾號後臺回覆 springboot2.2.4 可以獲取。

4.2 Spring 官方博客

每次 Spring 或者 Spring Boot 發新版本,鬆哥都會去看一下新版本有哪些好玩的東西,增加了哪些內容。我不可能把源碼讀一遍然後總結出來它的變化,那一般是如何獲取權威的第一手信息呢?關注 Spring 官方博客即可。

打開 Spring 官網,在頂部菜單裡有一個選項就是 Blog,關於 Spring 家族產品的任何更新計劃,更新結果,都會在這裡通知到大家。

SpringBoot要怎麼學?要學哪些東西?要不要先學SSM?鬆哥說說看法

鬆哥也推薦大家多多關注這個 Blog,一方面能夠及時接收到一手信息,另一方面還能提高英語,一舉兩得。宅在家,泡一壺茶,細細的品一品這個網站,真的蠻不錯。

Blog 地址:

4.3 中文資料

說到中文資料,就不得不說鬆哥自己的在線教程和離線 pdf 文檔了。手敲了 274 頁教程,囊括了 Spring Boot2 常見的各種用法,即有離線的 pdf 供大家下載,也有在線的學習網站,這就是滿滿的誠意,還沒下載 pdf 的小夥伴不要錯過。

SpringBoot要怎麼學?要學哪些東西?要不要先學SSM?鬆哥說說看法

在線教程地址:

離線 pdf 下載文檔,在公眾號後臺回覆 springboot 獲取百度網盤地址。

4.4 學習案例

除了這些文字性的東西之外,一些在線案例也至關重要。這裡給大家推薦兩個倉庫,這兩個倉庫中的所有案例都是基於 Spring Boot2 來做的。

首先就是我公眾號上文章的配套案例:

GitHub 地址:

Gitee 地址:

這個倉庫中的大部分案例都是針對 Spring Boot 的,而且有一個好處就是這些案例都有對應的講解文章,每個案例都對應一個文章,豈不美哉。

SpringBoot要怎麼學?要學哪些東西?要不要先學SSM?鬆哥說說看法

另一個倉庫就是我整理的比較完善的一個倉庫,但是就沒有對應的講解文章了:

GitHub 地址:

Gitee 地址:

5.小結

資料貴精不貴多,關鍵是要動手去學。大學時候,有的同學熱衷於收集各種資料,電腦硬盤塞得滿滿的,但是就是不學,這些資料再多也沒有用。

當然,如果大家對鬆哥自己錄製的 Spring Boot+Vue+微人事+Spring Cloud 視頻教程感興趣,也可以看看這篇文章:Spring Boot + Vue 視頻教程喜迎大結局,西交大的老師竟然都要來一套!

相關文章

MyBatis源碼解析(三)—緩存篇

Android主流三方庫源碼分析(六、深入理解Leakcanary源碼)

還不會七大排序,是準備家裡蹲嗎!?

Java併發原理抽絲剝繭,讀寫鎖ReadWriteLock實現深入剖析