Spring的模塊化設計和Java 9 的模塊化設計不是對等的,不過Spring 的模塊化確實能夠運用到Java 9 的模塊化裏面去 ,那是爲何呢,那是由於在Spring 的某個版本開始,它將它的模塊劃分爲更細粒的Jar 包,這些Jar包能夠按需應用分配的方式來依次依賴,好比它的核心模塊Spring-core,或者Spring-JDBC或者Spring-context這些模塊,按照徹底統計目前已經有了大概有20多個模塊java
Spring Framework 中這些模塊也是各司其職,而後各取所需的狀態,咱們在使用Spring Framework 的時候也不必定用到全部模塊所有依賴進來,這和它以往最先的版原本說,它的狀態是不同的,最先的時候是把全部的東西放在一塊兒,包括咱們所說的interface21web
下面是官網的模塊截圖spring
下面主要是針對Spring Framework 中的模塊作簡單的說明「白話講解說明」express
Spring-aop 編程
AOP 顧名思義就是面向接口編程websocket
Spring-aspects aspects mvc
其實就是Spring 對 aspects 的一個支持 app
Spring-beans & Spring-context 框架
Spring-beans和Spring-context都是須要經過Spring-core 來進行支持的,Spring-core 就包含了一些關於Java語法特性的支持 以及林林總總socket
Spring-expression
咱們常說的就是Spring的表達式語言 ,Spring 表達式語言是從Spring3開始引入,它相似於JSP裏面的EL語言(功能也是很是強大,前段時候作公式服務的時候主要核心技術就是利用Spring-expression表達式語言,後續有機會能夠開詳細介紹)
Spring-instrument
spring-instrument 是Spring 2開始對咱們Java的裝配 ,這個裝配簡單點講就是java 的agent的一個支持
Spring-jcl
spring-jcl 是一個新模塊,這個模塊是從spring5開始支持,那麼爲何Spring 要引用這個模塊呢?由於咱們知道過去運用過另外一個模塊,叫commons-logging,commons-logging 統一了Java的logging,就是Java 日誌和log4j這個日誌,那麼Java logging後又出現了LogBack,LogBack是一個新型的日誌框架,LogBack用到算了SL4J,SL4J就至關於說又把Java Logging和LogBack進行統一,Spring 爲了解決這個狀況本身研發了 一套新型的日誌框架Spring-JcL,Spring-JcL就會幫Spring統一它的日誌管理,咱們都知道Spring 過去都是經過commons-logging 來進行日誌管理這樣,Spring 的支持就會依賴外面的API ,因爲外部的API不斷在變化 ,因此這裏採用統一的方式進行處理和維護
Spring-JDBC
spring-jdbc顧名思義就是spring 對jdbc的一個整合這裏就不作過多的闡述
Spring-JMS
JMS其實就是Java Service Message 的一個縮寫,Java 的一個消息服務,這裏能夠對應的好比說Apache 的 Apache MQ 或者其餘傳統Java EE 的消息中間件 ,這部份內容只針對咱們JMS的規範來進行實施的,所以它會利用到大量的JMS的API來進行實現
Spring-message
Message 模塊其實就是Spring 相對消息模塊進行統一化管理,那麼包括咱們所說的JMS包括了 Kafka、RocketMQ、或者RabbitMQ 它都會有一個統一實現的標準,這個message和JMS有些同樣,JMS過去就是但願經過統一套標準的API來統一好比說MQ或者是說w blogic MQ或者是websphere MQ的實現,那麼Spring 的野心更大,它但願經過它本身的API來幫助你們實現一個最簡單或者說最好用的API體驗
Spring-orm
orm就是咱們好比Hibernate、JPA這種東西的一個整合,這個應該都比較熟悉
Spring-oxm
oxm簡單講就是XML的編列 ,也就是說就是說XML的序列化和反序列化,這個是一個新的模塊,Spring進行單獨維護
Spring-test
顧名思義就是Spring的一個測試,包含了Mock對象、包括test-context好比測試上下文和test-web測試,所以一般咱們引用它來講,好比:Maven裏面它的scope就是test scope它就是在測試場景下特殊實現,所以不須要把它引入到你平常開發中去
Spring-tx
tx 是 transtraction的縮寫就是咱們常說的Spring的事務抽象,這個對於學習Java的碼友是重點也是難點的一塊,那麼Spring的事務抽象一則基本上借鑑了JDBC的事務實現以及Java EE 尤爲是 EJB的事務實現作了一個統一的封裝(Spring Framework 框架來源是基於它的做者 Rod Johnson 寫過一本書就是 開發Java EE without EJB,就是不用EJB來實現 Java EE,裏面講到一個重要特色就是因爲事務重現,好比測試性或者可易用性必定要依賴某個容器,因此方便度確定不高,因此Spring提出一個tx方便咱們來使用 )
下面4個部分主要是Web部分
web 、webflux、webmvc以及websocket,爲何Web要分爲四個模塊來進行呈現?其實問題很簡單,由於spring 還想作個統一,它想作什麼呢!其實在Java EE web實現也有兩個實現,一個是傳統的Servlet API 實現就是基於底層API接口的實現 ,另一個方面就是JAX-RS ,什麼是JAX-RS 就是Java 標準的註解的方式來驅動開發RESTful服務,Spring也是基礎它們基礎來開發spring-webmvc和spring-webflux ,因此你會看到Spring-webmvc和Spring-webflux裏面的註解和JAX-RS的註解特別像
上面20多個模塊 19個模塊能夠用於咱們平常開發一個可用於平常測試使用
總結
經過上面的20個模塊的簡單分析,咱們能夠看出Spring目前開始把功能精細化,就是說若是我想須要Spring的某些特性,只須要增長對某個模塊的依賴,這些模塊能夠作到按需分配