3.小結
好啦,今天就先和大家稍微聊一下 Spring 中的各個(gè)模塊,接下來(lái)松哥將按照本文的順序和大家逐步剖析 Spring 源碼,其中 Ioc/DI、AOP 將是分析的重點(diǎn)。
松哥思來(lái)想去,決定在視頻開(kāi)始錄制之前,先出一系列源碼解讀的文章,通過(guò)圖文的形式先帶領(lǐng)大家進(jìn)入 Spring 源碼的世界,然后再抽時(shí)間錄視頻,這樣感覺(jué)更穩一些。
SSM 作為 Java 開(kāi)發(fā)領(lǐng)域的經(jīng)典框架組合,作為一個(gè)有追求的技術(shù)人,都是有必要認真去走一遍 Spring 源碼的,搞懂 Spring 源碼,不僅僅是為了掌握 Spring,也是為了學(xué)習其中優(yōu)秀的設計思想。
Web 主要包含如下模塊:
2.3 Data AccessData Access 模塊中,主要是封裝了一些數據庫持久化相關(guān)的操作。比如 JDBC、ORM、OXM、JMS 以及事務(wù)。
所以今天這篇文章,我主要和大家說(shuō)一下我的 Spring 源碼解讀計劃,大概從哪幾個(gè)方面入手。
視頻可能還需要準備一個(gè)配套的文檔,文檔的撰寫(xiě)跟寫(xiě)博客一樣,得不少時(shí)間。
其他一些冷門(mén)的模塊我就不多做介紹了。
Expression Language:SpEL 雖然歸類(lèi)于 Core Container,但是在目前前后端分離的背景下,其實(shí) SpEL 的使用場(chǎng)景大大縮水。SpEL 是一個(gè)支持查詢(xún)并在運行時(shí)可以操縱一個(gè)對象圖的表達式語(yǔ)言,它的語(yǔ)法類(lèi)似于統一 EL,但提供了更多的功能,而且它可以獨立使用。
2.5 Test對測試功能提供支持。
Context:Context 雖然不像前兩個(gè)模塊那么基礎,因為它是基于 Core 和 Beans 構建的,但是 Context 也是我們在 Web 項目中必不可少的工具,資源加載、Event 等等都需要 Context。
可以這么說(shuō),如果你看懂了 Spring 源碼,再去看 MyBatis、Spring Security 源碼,你會(huì )發(fā)現這些源碼都非常容易,稍微瞅幾眼就懂了。
松哥自己在 Spring 源碼這塊前前后后也折騰了很久了,有一些心得一直想和大家分享,但卻總下不了決心,因為現在已經(jīng)很忙了,再加塞一個(gè)任務(wù)進(jìn)來(lái),怕是吃不消,但是很多時(shí)候,我們總得逼自己一把,才能成長(cháng),不能總是躺在舒適區。于是下定決心,這次一定要把 Spring 源碼解析的視頻錄出來(lái)。
Web:提供基礎的 Web 功能,構建 Web 上下文、提供文件上傳等功能。
2.4 WebWeb 模塊里邊包含幾個(gè)部分,不過(guò)對于我們而言,使用更多的是 webmvc,也就是我們常說(shuō)的 SpringMVC。
Core Container
我們在學(xué)習 Spring 的時(shí)候,有兩個(gè)非常重要的地方:
Core:這個(gè)是 Spring 的核心模塊,它里邊主要是 Spring 框架的一些基礎工具類(lèi),比如一些序列化工具、類(lèi)型轉換器、我們常用的優(yōu)先級注解等等,都是它提供的。
從這張圖中,我們可以看到,Spring Framework 中包含的東西還是非常多的,雖然東西很多,但是主次其實(shí)很明顯。
視頻錄完之后,一般都要二次處理一下,去噪音等等,二次處理耗時(shí)和計算機性能有很大關(guān)系,這也是一個(gè)耗時(shí)操作。
視頻的案例,需要提前準備,不是講的時(shí)候邊講邊寫(xiě),那樣是不負責任的,對自己不負責,對讀者也不負責。錄視頻和寫(xiě)博客一樣,案例都是要先經(jīng)過(guò)設計的:這個(gè)知識點(diǎn),我用一個(gè)什么樣的 Demo 才能讓讀者更好的理解它?
AOP
JDBC:這個(gè)是對傳統的 JDBC 的封裝,傳統的 JDBC 里邊有很多冗余代碼,Spring 利用自身特性對其進(jìn)行封裝,簡(jiǎn)化了數據庫訪(fǎng)問(wèn)。
我來(lái)分別介紹一下這幾個(gè)模塊的作用。
1.Spring 架構先來(lái)看一張 Spring 整體架構圖:
所以要把一個(gè)自己懂的東西講出來(lái),同時(shí)還要讓聽(tīng)講的人聽(tīng)懂,這并非一件容易的事情。
然而視頻錄制是一個(gè)非常費時(shí)費力的事情,有的人可能不太理解為什么視頻會(huì )更加費時(shí)間,松哥來(lái)給大家舉幾個(gè)例子:
我來(lái)給大家挨個(gè)介紹一下。
ORM:ORM 為我們常見(jiàn)的 ORM 框架(如 Hibernate、MyBatis 等)提供了一個(gè)交互層。
然而源碼的學(xué)習是一個(gè)枯燥的過(guò)程,源碼解讀也是一個(gè)枯燥的過(guò)程,但是一旦你把源碼搞懂了,技術(shù)上的提升也絕對是肉眼可見(jiàn)的,所以,去折騰一下源碼絕對是有必要的,這也是你和同行拉開(kāi)差距的方式之一。
WebMVC:提供 MVC 支持。
2.Spring 模塊2.1 Core ContainerCore Container 是 Spring 容器的核心模塊,里邊主要包含四個(gè)模塊:Beans、Core、Context 以及 Expression Language,我們所熟知的 IoC/DI 就是由 Beans 和 Core 來(lái)提供。
Beans:Beans 就沒(méi)啥好說(shuō)的,我們所熟知的 IoC/DI 就是由它提供的。
OXM:OXM 模塊抽象了對象和 XML 之間的轉換,O 是 Object,X 是 XML。
JMS:JMS 主要是對消息中間件的消息發(fā)送/消費提供封裝。
這兩個(gè)是核心,也是我們到時(shí)候源碼分析的重點(diǎn),其他的 Data Access 、Web 等,基本都是以這兩個(gè)為基礎擴展出來(lái)的功能。
2.2 AOPAOP 也是 Spring 中一個(gè)非常重要的功能模塊,其實(shí)小伙伴們從平時(shí)的面試中應該就能感覺(jué)出來(lái) AOP 的分量,可以說(shuō),如果沒(méi)有 AOP,你就見(jiàn)不到 Spring 中很多令人驚嘆的功能。像我們熟知的 Spring 中的事務(wù)管理,就離不開(kāi) Spring AOP。關(guān)于 AOP 的更多介紹,大家可以參考已經(jīng)錄制的 【Spring 基礎篇】的視頻,我就不再贅述。
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。
Copyright ? 2009-2022 56dr.com. All Rights Reserved. 特網(wǎng)科技 特網(wǎng)云 版權所有 特網(wǎng)科技 粵ICP備16109289號
域名注冊服務(wù)機構:阿里云計算有限公司(萬(wàn)網(wǎng)) 域名服務(wù)機構:煙臺帝思普網(wǎng)絡(luò )科技有限公司(DNSPod) CDN服務(wù):阿里云計算有限公司 百度云 中國互聯(lián)網(wǎng)舉報中心 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證B2
建議您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流瀏覽器瀏覽本網(wǎng)站