Spring特性總覽

一、核心特性

  • IoC 容器(IoC Container)
  • Spring 事件(Events)
  • 資源管理(Resources)
  • 國際化(i18n)
  • 校驗(Validation)
  • 數據綁定(Data Binding)
  • 類型裝換(Type Conversion)
  • Spring 表達式(Spring Express Language)
  • 面向切面編程(AOP)
 

二、數據存儲

  • JDBC
  • 事務抽象(Transactions)
  • DAO 支持(DAO Support)
  • O/R映射(O/R Mapping)
  • XML 編列(XML Marshalling)

三、Web 技術

  • Web Servlet 技術棧
    • Spring MVC
    • WebSocket
    • SockJS
  • Web Reactive 技術棧
    • Spring WebFlux
    • WebClient
    • WebSocket

四、技術整合

  • 遠程調用(Remoting)
  • Java 消息服務(JMS)
  • Java 連接架構( JCA)
  • Java 管理擴展(JMX)
  • Java 郵件客戶端(Email)
  • 本地任務(Tasks)
  • 本地調度(Scheduling)
  • 緩存抽象(Caching)
  • Spring 測試(Testing)

五、測試

  • 模擬對象(Mock Objects)
  • TestContext 框架(TestContext Framework)
  • Spring MVC 測試(Spring MVC Test)
  • Web 測試客戶端(WebTestClient)
 
 
 

記錄小馬哥的講解

  爲了避免從入門到勸退,本人把小馬哥視頻中講解的語言記錄下來了,部分語言稍作修改。

  1、核心特性包括  第一,IoC 容器、老生常談的啦。

          第二,Spring 事件(是基於java的標準事件進行擴展的,但是和java的標準事件還有些區別,後面詳細描述。)

          第三,資源管理也是繼承於Java的一些資源管理,有些API是借鑑了Java核心的底層API的一個實現。

          第四,國際化,Java其實默認就支持國際化,因此Spring國際化也是基於Java API進行實踐的。

          第五,校驗,Java JDK底層是沒有提供的,是Spring自己做了一些特殊的一些API設置。比如借鑑Bean Validation, Spring在它的Framework裏面做了Bean Validation的一個整合。

          第六,數據綁定,在Java裏面也沒有特別實現,是Spring特有的實現。簡單說是,外面的屬性和Java 的 POJO的Setter、Getter來進行一個數據上的轉化和綁定。

          第七,類型裝換,有了數據綁定,就會涉及到類型轉換,也是Spring核心特性之一。能夠幫助我們進行更好的有擴展性的類型轉換。

          第八,Spring 表達式,和JSP表達式是如出一轍的,在JSP裏面可以通過符號的方式引用變量,達到實現動態調用的目的。

          第九,面向切面編程,常說的AOP。

  2、數據存儲包括 第一,JDBC,關係型數據庫務必會和JDBC打交道,只不過是在JDBC上面做了一些封裝,比如MyBatis、Hibernete。JDBC是java API和數據庫打交道的一個通道,Spring在此做了相應的實現,比如 jdbcTemplate。

          第二,事務抽象,面試必考的內容,實際上來源於EJB, Spring 只不過在上面做了一些簡化操作。事物的抽象在實現中有一個單獨的API或者單獨的規範來進行實現,Spring也只是做了一些簡單的封裝。

          第三,DAO 支持,Spring做了很大的封裝,簡化DAO的一個寫法和實現方式,比如常見的SQLException。

          第四,O/R映射,早期瞭解到Spring對Hibernete的支持,Spring對JDO的支持,後面JPA替代了JDO,JPA默認的實現就是Hibernete,因此討論JPA和討論Hibernete是討論一個東西。

          第五,編列,把 xml 和Java的序列號進行對比的話,Java的序列化就相當於這裏的編列,反序列化就是反編列。熟悉JAXB(Java API for XML Binding)的話,會對此有了解。

  3、Web技術包括 Web Servlet 技術棧,Web Reactive 技術棧。

          第一,按照版本的分佈, Web Servlet 技術棧是從Spring 1 到 Spring 4版本的唯一支持,從Spring 5纔開始引入Web Reactive 技術棧。

          第二,Reactive 技術棧包括Spring WebFlux、Spring MVC,其實這兩個在註解上面是一模一樣的,只是底層的實現發生了變化。傳統的Spring MVC是需要Servlet引擎進行支撐的。

          第三,Reactive通常默認情況下是Netty的 Web server。當然Reactive也是可以運用Spring MVC 的引擎進行實現的,也就是說可以用到Servlet引擎進行實現。於此不同的是Servlet規範裏面在3.0以後規劃是對websocket進行支持,那麼Web Servlet 技術棧也會有這方面的支持。關於SockJS也是一個技術棧,這裏不做討論。

          第四,關於 Reactive的兩個部分理解,一個是WebSocket,一個是WebClient,在早期的時候,Spring框架5.0之前,有個東西叫RestTemplete或者叫HttpClient是一個同步的Http的執行客戶端,那麼WebClient引用之後,它把過去的同步執行變成異步回調的方式。其實Web Reactive和Spring MVC 幾乎如出一轍,只不過在API封裝上面做出了一些變化。

  4、技術整合,內容比較龐雜,相當於是一個生態的整合。

          第一,遠程調用(Remoting ),有幾種方式的實現,比如:RMI, Java標準的遠程方法調用; Hessian社區開源的一個方案,Dubbo是基於Hessian協議的。那麼Spring Framework做了一層封裝,無論你是基於HTTP的調用還是常說的Hessian調用,都可以通過統一的封裝來執行方法的調用得到結果。和之前講的Reactive不同點是,通常來說遠程的調用是採用同步的模式。那麼異步的模式如下面所講的Java的消息服務。

          第二,消息服務(JMS),全稱Java Message Service,這是一個異步的調用用傳統的JMS規範來實現。比如說ActiveMQ,但是Kafka, RocketMQ,等並不是用傳統的JMS規範來實現的。

          第三,Java 連接架構,Java EE的一套架構,主要是統一一些Java的資源連接(如JDBC連接)。

          第四,Java 管理擴展(JMX),全稱 Java Management Extensions,用於Java的一個管理。對於大多數程序員來說,關注的是開源側、開發側,不太關注運維側,比如,cpu利用率,磁盤利用率,都可以通過JMX來進行查詢。

          第五,Java郵件客戶端,頂不住了,不寫了,都是介紹,後面詳細瞭解,這裏瞭解目錄大概。

  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章