2020年10月15日,本人有幸參與了掘金技術社區的一次直播活動,做爲主講人與小夥伴們分享了一些關於 Spring 方面的內容。此次分享的內容以概述爲主,主要幫小夥伴們理清楚學習 Spring 的思路,以及學完 Spring 框架以後的進一步規劃。react
寫這篇文章,主要是記錄一下當天分享的內容,以及一些後續的覆盤等等,幫助沒有遇上車的小夥伴們。git
【B站直播回放:www.bilibili.com/video/BV13i…】github
既然是聊 Spring ,那咱仍是要知道它的地位和份量。Spring 的地位想必都已經到 2020 年了,小夥伴們都很是的清楚。面試
在 Spring 的官方網站 spring.io 中,一上來咱們看到的就是 Spring 官方對 Spring 的描述:spring
Spring makes Java simple.modern.productive.reactive.cloud-ready.編程
Spring 使 Java 開發變得簡單、現代化,而且能夠編寫生產級別的應用、響應式的應用,而且也支持雲應用。json
包括下面主頁上也列出了 Spring 能夠作的內容:後端
可見,Spring 表明的不只僅是一個框架 / 一個技術,而是一整個生態。緩存
翻開 Spring 官網的工程概覽 spring.io/projects ,咱們會發現裏面的工程實在是好多好多呀!安全
最頂部的兩個表明之做,分別是現階段最最流行的後端服務搭建基本框架 SpringBoot ,以及它的基底 SpringFramework :
往下看,還有關於數據訪問層的 SpringData 、用於解決微服務開發的總體解決方案 SpringCloud 、用於解決權限安全方面的 SpringSecurity 、用於解決 Session 外置的 SpringSession 等等,這些都是 Spring 生態中的一個個解決方案。
若是隻是人家官方本身吹,那說服力很明顯不是很足,咱看看主流的比較受歡迎的開源項目,它們都用了什麼底層框架。
翻開碼雲的開源項目 gitee.com/explore/bac… ,觀察這些比較受歡迎的後臺管理系統都是用什麼搭建的:
可見這些開源項目都是基於 Spring / SpringBoot 搭建的!這足夠有說服力了吧,連這些主流的、受歡迎的項目都是用 Spring 搭建的,那就足以說明 Spring 真的足夠的強大了。
最後一個點是關於面試,一直以來面試中就容易問到 Spring 這個框架,並且近年來難度有上升趨勢,小夥伴們看如下幾個問題都能回答多少呢:
這些問題,在 Spring 的小冊,以及 SpringBoot 的小冊中,都有相應的解答,小冊總結的面試題不少,若是小夥伴們有在準備面試的話,小冊會是你備戰的一個堅實的依靠。
那既然 Spring 如此的重要,咱們應該如何全方面的去學習、掌握 Spring 這個框架呢?
簡單的來說,咱們能夠分爲 4 個部分來學習:
IOC 的部分是整個 Spring 框架最強大,同時也是最複雜的部分,這裏麪包含的知識點實在是太多了,咱能夠簡單地羅列一下:
這些知識點,在 《從 0 開始深刻學習 Spring》的小冊中,所有都會講到,並且難度都是逐層遞進的,包括其中涉及到的面試題總結等等。
Spring 的兩大核心,除了 IOC 以外,另一個就是 AOP 了。咱都知道 AOP 的核心底層實現是動態代理,那它是怎麼實現的,如何編寫 AOP 的切面;以及 Spring 中對於 AOP 的一個實現:事務管理,它又是怎麼使用的,如何編程式 / 聲明式 / 配置式的添加事務,以及它的底層如何實現事務控制,這都是在 AOP 和事務部分要學習的。
這個部分的內容大概能夠劃分爲以下內容:
大多數人都喜歡把 Spring 跟 SpringMVC 分開來講,但確切的說,SpringMVC 是 Spring 框架的一部分,而且自打 Spring 5 出現以後,SpringMVC 多了一個孿生兄弟 SpringWebFlux ,因此 SpringMVC 也被稱爲 SpringWebMvc 了。
一樣的,Web 模塊中 Spring 也是重拳出擊,這部份內容主要圍繞如下的一些關鍵知識點來學習:
SpringWebFlux 由於用的人還不多,並且理解的難度相對很大,因此這裏咱們只是提一下,若是小夥伴已經熟練掌握了 SpringWebMvc ,那能夠試着學習一下 WebFlux 的東西。
若是隻是由於 Spring 這個框架自己強大的話,還不足以在整個 JavaWeb 的開發界獨佔鰲頭,它優秀且強大的整合第三方技術的能力絕對是不可或缺的一部分。一般來說咱們接觸的比較多的、比較知名的技術,幾乎都與 Spring 框架進行了整合。
這裏面不乏包含咱熟悉的技術:
學習這些技術的時候,必定要記得順便學習它與 Spring 的整合。
對於 Spring 框架的學習,做者能夠提供兩種思路:
兩種方法思路任選其一,根據本身的學習風格、思惟和習慣來就好。
不止是學習 Spring ,學習其它框架 / 技術時,這兩種思路一樣適用。
Spring 框架學習完畢以後,接下來的規劃也是相當重要的。明確本身目前所處的位置,並針對本身的狀況制定中長期的規劃,對本身的整個職業生涯的重要性不言而喻。做者在此也只是提一些導向性的建議,幫助小夥伴們理清本身。
回答:不須要。
緣由:對於初入職場的小夥伴,公司更看重的是你的基本功,基本功紮實,想必可塑性都不會差。因此,儘量的讓你的基礎知識掌握得更牢靠吧(JavaSE 、JavaWeb 、基本的框架等)。
回答:通常發生在後置處理器的初始化階段。
原理:可參照小冊第 34 章和第 48 章(後續更新)。
回答:可參考開源項目 learningjdk 。
回答:必須的。
緣由:兄dei,若是你連 HttpServletRequest 和 HttpServletResponse 都搞不明白,學 SpringBoot 開發 Web 場景的功能時,豈不就直接廢了?Servlet 方面的知識是 JavaWeb 的基礎,SpringWebMvc 是構建在 JavaWeb 之上的,SpringBoot 又是整合 SpringWebMvc 的,因此按照這個依賴關係,Servlet 固然是一個必學項啦,並且是基礎的必學項。
回答:多寫多用多練。
小夥伴們捫心自問一下,你一開始學習那些框架、知識等等的,發現有這樣那樣的高級知識,你學會了,哇塞我牛X了,我直接蕪湖起飛了!但是,你真的有在實際場景下用過嗎?對於咱搞開發的來說,知識不是學了就能記住的,必定要多加練習,這個學習沒有捷徑,你看到的熟練都是背後有大量付出的。
初次參與直播分享,前期準備的也比較有限,不免會出現有些地方的疏漏、或者交流不充分不到位的地方,敬請小夥伴們海涵和指正。小夥伴們能夠經過加入掘金直播分享羣找到我,或者經過郵箱 LinkedBear@163.com 與我聯繫。後續有機會的話,我也會繼續參加咱掘金的直播,繼續與各位小夥伴做有關 Spring 及生態相關的技術分享和交流。
最後,感謝各位小夥伴的捧場,也感謝掘金官方工做人員的辛勤付出,各位都辛苦啦!