1. 程式人生 > >spring(7)---深入理解Spring核心技術——Spring中的各模組詳解

spring(7)---深入理解Spring核心技術——Spring中的各模組詳解

深入理解Spring核心技術——Spring中的各模組詳解

 

   Spring框架的兩個基本概念IOC容器和AOP,相信大家現在對Spring中的這兩個部分的基本概念有了一定的認識,好了,那麼今天我們就來正式的進入Spring框架的學習了。

前面提到過,Spring框架就是幫助我們建立物件、管理物件之間的關係,讓我們在開發的時候只需要關注具體的業務邏輯,而不用花時間去管理物件與物件之間的聯絡。我們知道了IOC容器就是用來建立物件的,Spring中的依賴注入就是在建立物件的時候就幫我們建立了物件和物件之間的關係,我們不需要手動的去處理物件和物件之間的關係,這就會大大的提高了我們的開發效率。同樣的,spring是支援AOP的,這樣就可以很大程度上降低了程式中重複的程式碼,讓我i們的程式更加靈活。前面給大家分別手動實現了IOC容器和AOP。相信大家對他們的實現都原理都有了一定的認識。好了,下面就來進入spring的學習了。

到今天(2018.10.20)為止,spring最新的版本是Spring5,不過我們先來以spring4的版本來講解,因為外邊的公司目前主要用的還是4.X的版本比較多,公司做專案一般的原則就是求穩不求快,意思就是慎用新技術,優先選擇穩定成熟的技術。在Spring4.X中一共有20個模組,我們從網上下載下來的zip包中大家可以發現一共由60個jar包,其中實際上只有20個jar包。

如下圖所示:

深入理解Spring核心技術——Spring中的各模組詳解

 

這是從官網上下在的zip包,我們將其解壓後會出現一個資料夾,開啟資料夾進入,結構如下圖所示:

深入理解Spring核心技術——Spring中的各模組詳解

 

進入該資料夾後會出現上述檔案和資料夾,這裡解釋一下,docs資料夾下放的是離線的html文件,libs目錄下就是我們需要的spring框架的完整jar包,schema資料夾下存放的是約束檔案,下面三個文字檔案相信大家都應該認識吧,第一個檔案是許可證書,第二個檔案是需注意事項,第三個檔案是關於spring框架的說明,包含了版本更新的說明。好了、關於目錄就給大家先介紹到這裡了。接著我們開啟libs,這個資料夾下的就是我們常說的spring框架的全部內容了,該目錄的結構如下圖所示:

深入理解Spring核心技術——Spring中的各模組詳解

 

這裡只給出一部分截圖,spring4中一共有60個jar包,你可能會好奇,前面不是說spring4只有20個模組嗎,為什麼會出現60個jar包,其實你仔細觀察上圖就會發現,這些jar包是3個成一組出現的,其中第一個就是我們需要用到的jar包,第二個以javadoc結尾的是該部分的api文件,第三個以source結尾的就是該模組的原始碼,由於spring框架是個開源的專案,所以我們可以下載他的原始碼。好了,和大家介紹了spring官網提供的spring目錄結構,下面就來給大家詳細的解釋每個模組的作用,

在前面有一篇部落格給大家介紹了spring框架一共分為6個功能模組,每個功能模組裡邊都至少包含一個jar包。在這裡,我們按照 上次分的功能模組分別來解釋每個jar的作用,

首先來看核心容器模組,該模組主要由以下5個jar包構成:

深入理解Spring核心技術——Spring中的各模組詳解

 

spring-core:這個包就是spring框架的核心類,spring其她的模組一般都會用到這個包中的核心類,換句話說,你只要使用了spring框架,就必須要引入這個包,當然如果你是使用maven這種專案構建工具的話,只要你引入了spring框架中的某一個模組,就會同時給你引入core包。接下來就是spring-bean:該包的作用是spring用來定義bean,接著就是spring的上下文,也就是我們常說的ioc容器,spring-context。同時還有對第三方包提供整合支援的spring-contex-support,最後就是spring-expression。這個包的作用是提供spring表示式語言,使用spring表示式語言可以在執行時查詢或者操作物件。好了,spring核心容器主要就是上述5個jar包組成。

接著就是面向切面的aop功能模組了。這個模組主要有以下兩個jar包組成:

深入理解Spring核心技術——Spring中的各模組詳解

 

分別是spring-aop和spring-aspects,其中前者是提供基於cglib代理的方式實現aop功能後者是提供基於aspectJ的方式實現aop的功能。

第三個功能模組就是資料訪問模組,該模組主要由4個jar包組成:

深入理解Spring核心技術——Spring中的各模組詳解

 

第一個毫無疑問就是spring-jdbc,這個就不用來解釋了吧,相信大家都能看得出來這個jar就是提供使用JDBC訪問資料的功能,既然提到了資料庫,那麼肯定就和操作資料有關係,既然要操作資料,那麼不能少了事務吧,我們可以發現,spring-tx這和jar包,因此不難發現,這個jar包就是提供程式設計式和宣告式的事務支援。大家可以想到,操作資料庫有很多框架都可以啊,那麼spring僅僅只支援JDBC嗎,肯定不是的,接著往下看,我們發現了spring-orm和spring-oxm這兩個jar包,orm可能大家比較熟悉,就是物件關係對映。spring-orm這個jar包就是提供物件關係對映技術的支援,而OXM技術指的是物件和XML之間的對映,這個功能是在spring3中引入的一個功能,不過用的比較少。

第四個功能模組就是對Web支援的模組,同樣的這個模組的功能主要依賴於4個jar包,

深入理解Spring核心技術——Spring中的各模組詳解

 

首先就是spring-web,這個包提供了基礎的web整合的功能,也就是說在web專案中提供spring容器。接下來就是大名頂頂的spring-webmvc,這個模組就是提供了基於servlet的MVC架構實現,據說這個模組是spring作者隨便加入的,當初spring的作者Rod Johnson只是為了證明實現實現MVC架構的原理是件非常簡單的事,因此就有了spring-mvc.後來由於springMVC得到了大家的認同,成為了最熱門的MVC框架,這也是Rod Johnson當時沒有預料到的。接下來的就是spring-websocket和spring-webmvc-portlet這兩個包了,不難的發現前面一個肯定和套接字有關,該包提供了對socket通訊的支援。後面的一個是spring自己實現的一個類似Web MVC的框架,主要包括一個MVC框架和控制器。該模組依賴spring-web包。好了web部分的功能模組介紹完了。

第五個功能模組就是訊息,該模組主要一下幾個jar包組成。

深入理解Spring核心技術——Spring中的各模組詳解

 

首先是對訊息架構和協議的支援的spring-messaging,對JMS提供支援的spring-jms。所謂的JMS就是java message service的縮寫,意思就是Java訊息服務。在web環境中,應用和應用之間通訊就是以訊息的形式實現的。

好了,前面的5個功能模組的功能所依賴的jar包都給大家介紹完了,後面的還有spring中的測試功能,也就是大家常用的test註解。同樣的spring中也提供了支援,

深入理解Spring核心技術——Spring中的各模組詳解

 

好了,已經給大家介紹了核心容器的5個包+面向切面的2個包+資料訪問的4個包+web支援的4個包+訊息支援的2個包+測試的1個包,一共已經介紹了18個包。那麼還有兩個呢?來看剩下的2個:

深入理解Spring核心技術——Spring中的各模組詳解

 

其實這兩個jar包本質上也是提供AOP的支援,其中spring-instrument主要是用於JVM啟動引導的監測代理 ,也就是說提供的是一些類級的工具支援和ClassLoader級的實現,主要用於伺服器。而spring-instrument-tomcat毫無疑問就是用於Tomcat的監測代理了,也就是針對tomcat的instrument實現。很多資料上都把這兩個jar包劃分到aop模組,準確的說也確實是屬於aop模組的技術支援,但是我個人還是習慣將這兩個jar包單獨劃分出來,畢竟這兩個jar包都是和應用的本地環境有關,而面向切面指的應該是一種程式設計的思維,不應該和某種具體的應用或者環境相結合。因此個人覺得spring-aop和spring-aspetcs劃分到aop中比較合適,而 instrument和instrument-tomcat則是和本地環境有著緊密的聯絡,因此應該單獨的劃分為一類。

好了,spring框架的各個功能模組的依賴已經給大家介紹完了,到這裡相信大家對spring已經有了一定的認識。在後面的章節中打算使用spring做一個專案,根據實際專案來帶著大家一起更加深入的學習spring技術棧