Spring組件概述

Spring IO Platform

What

簡單的可以認爲是一個依賴維護平臺,該平臺將相關依賴匯聚到一起,針對每個依賴,都提供了一個版本號。這些版本對應的依賴都是經過測試的,可以保證一起正常使用。

Why

主要是解決依賴版本衝突問題,例如在使用Spring的時候,經常會使用第三方庫,一般大家都是根據經驗挑選一個版本號或挑選最新的,隨意性較大,其實這是有問題的,除非做過完整的測試,保證集成該版本的依賴不會出現問題,且後續集成其它第三方庫的時候也不會出現問題,否則風險較大,且後續擴展會越來越困難,因爲隨着業務複雜度的增加,集成的第三方組件會越來越多,依賴之間的關聯也會越複雜。
好消息是,Spring IO Platform很好的解決這些問題,我們在添加第三方依賴的時候,不需要寫版本號,它能自動幫我們挑選一個最優的版本,保證最大限度的擴展,而且該版本的依賴是經過測試的,可以完美的與其它組件結合使用

Spring Boot

What

Spring Boot是用來簡化新Spring應用的初始搭建以及開發過程。該框架使用了特定的方式來進行配置,從而使開發人員不再需要定義樣板化的配置。簡單理解,Spring Boot不是新的框架,它默認配置了很多框架的使用方式,就像maven整合了所有的jar包,Spring Boot整合了大部分框架。

Why

使用Spring Boot可以非常方便,快速搭建項目,使我們不用關心框架之間的兼容性,適用版本等各種問題,我們想使用任何東西,僅僅添加一個配置就可以,所以使用Spring Boot非常適合構建微服務。

Spring FrameWork

What

它是一個基於IoC和AOP的架構多層J2EE系統的框架,但它不強迫你必須在每一層中必須使用Spring,因爲它模塊化的很好,允許你根據自己的需要選擇使用它的某一個模塊;它實現了優雅的MVC,對不同的數據訪問技術提供了統一的接口,採用IoC使得可以很容易的實現Bean的裝配,提供了簡潔的AOP並據此實現Transaction Managerment等等

Spring Cloud Data Flow

what

  1. 一個用於開發和執行大範圍數據處理,其模式包括ETL,批量運算和持續運算的統一編程模型和託管服務。
  2. 對於在現代運行環境中可組合的微服務程序來說,Spring Cloud Data Flow是一個原生雲可編配的服務,可以爲數據抽取,實時分析,和數據導入/導出這種常見用例創 建和編配數據通道。
  3. 是基於原生雲對Spring XD的重新設計,目標是簡化大數據應用的開發。
  4. 爲基於微服務的分佈式流處理和批處理數據通道提供了一系列模型和最佳實踐特點。

Spring Cloud

what

是一系列框架的有序集合,利用Spring Boot的開發便利性巧妙地簡化了分佈式系統基礎設施的開發,爲開發人員提供了快速構建分佈式系統中的一些通用模式(例如配置管理,服務發現,斷路器,智能路由,微代理,控制總線,一次性令牌,全局鎖,領導選舉,分佈式會話,集羣狀態)。分佈式系統的協調導致了鍋爐板模式,並且使用Spring Cloud開發人員可以快速的實現這些模式的服務和應用程序。

Spring Data

what

爲了簡化構建基於Spring框架應用的數據訪問計數,包括非關係數據庫,Map-Reduce框架,雲數據服務等等,另外也包含對關係數據庫的訪問支持。包含以下子項目:
1. Commons 提供共享的基礎框架,適合各個子項目使用,支持跨數據庫持久化
2. Hadoop 基於Spring的Hadoop作業配置和一個POJO編程模型的MapReduce作業
3. Key-Value 集成了Redis和Riak,提供多個常用場景下的簡單封裝
4. Document 集成文檔數據庫,CouchDB和MongoDB並提供基本的配置映射和資料庫支持
5. Graph 集成Neo4j提供強大的基於POJO的編程模型
6. Graph Roo AddOn 支持Neo4j的Roo
7. JDBC Extensions 支持Oracle RAD, 高級隊列和高級數據類型
8. JPA 簡化創建JPA數據訪問層和跨存儲的持久層功能
9. Mapping 基於Grails的提供對象映射框架,支持不同的數據庫
10. Examples 示例程序,文檔和圖數據庫
11. Guidance 高級文檔

Spring Integration

what

擴展了Spring的編程模式到消息領域,在Spring已經存在的企業集成支持的基礎上,提供了更高級別的抽象。它將控制反轉添加到關注點,支持消息驅動架構,例如當特定業務邏輯應該執行時,響應也應該被髮送。它支持路由和消息轉換,所以不同的傳輸協議和不同的數據格式能在不影響易測試性的前提下被集成。換句話說,消息和集成關注點都被框架處理,所以業務組件能更好地與基礎設施隔離,從而降低開發者所要面對的複雜的集成職責。

Spring Batch

what

  1. 是一個輕量級的,完善的批處理框架,提供了大量可重用的組件,包括了日誌,追蹤,事務,任務作業統計,任務重啓,跳過,重複,資源管理。對於大數據量和高性能的批處理任務,Spring Batch同樣提供了高級功能和特性來支持,比如分區功能,遠程功能。總之,通過Spring Batch能夠支持簡單的,複雜的和大數據量的批處理作業。
  2. 是一個批處理應用框架,不是調度框架,但需要和調度框架合作來構建完整的批處理任務。它只關注批處理任務相關的問題,如事務,併發,監控,執行等,並不提供相應的調度功能。如果需要使用調度框架,在商業軟件和開源軟件中已經有很多優秀的企業級調度框架(如Quartz, Tivoli, Control-M, Cron等)可以使用

所謂企業批處理就是指在企業級應用中,不需要人工干預,定期讀取數據,進行相應的業務處理之後,再進行歸檔的這類操作。從上面的描述中可以看出,批處理的整個流程可以明顯的分爲以下3個階段:
1. 讀數據
2. 業務處理
3. 歸檔結果數據

另外,從定義中可以發現批處理的一個重要特色就是無需人工干預,定期執行,因此一個批處理框架,需要關注事務的粒度,日誌監控,執行方式,資源管理,讀數據,處理數據,寫數據的解耦等方面。
Spring Batch爲我們提供了什麼呢?
1. 統一的讀寫接口
2. 豐富的任務處理方式
3. 靈活的事務管理及併發處理
4. 日誌,監控,任務重啓與跳過等特性

注意,Spring Batch並未提供關於批處理任務調度的功能,因此如何週期性的調用批處理任務需要自己想辦法解決,就Java來說,Quartz是一個不錯的解決方案,或者寫腳本處理。

Spring Security

what

是一個能夠爲基於Spring的企業應用系統提供聲明式的安全訪問控制解決方案的安全框架。

  1. 全面的和可擴展的身份驗證和授權支持
  2. 會話固定攻擊防護,clickjacking,跨站請求僞造等等
  3. Servlet API集成
  4. 可選的Spring Web MVC集成

Spring Hateoas

what

Hateoas約束是REST架構風格中最複雜的約束,也是構建成熟REST服務的核心。它的重要性在於打破了客戶端和服務器之間嚴格的契約,使得客戶端可以更加智能和自適應,而REST服務本身的演化和更新也變得更加容易。
如果Web應用基於Spring框架開發,那麼可以直接使用Spring框架的子項目HATEOAS來開發滿足HATEOAS約束的Web服務。滿足HATEOAS約束的REST服務最大的特點在於服務器提供給客戶端的表達中包含了動態的鏈接信息,客戶端通過這些鏈接來發現可以觸發狀態轉換的動作。Spring HATEOAS的主要功能在於提供了簡單的機制來創建這些鏈接,並與Spring MVC框架有很好的集成。對於已有的Spring MVC應用,只需要一些簡單的改動就可以滿足HATEOAS約束。

Spring Rest Docs

what

可幫助記錄RESTful服務。結合了用Asciidoctor編寫的手寫文檔和使用Spring MVC Test生成的自動生成的代碼段。這種方法免受Swagger等工具的限制,可以幫助生成準確,簡潔和結構良好的文檔,

Spring Social

what

隨着社交網絡的流行,在應用中加入對主流社交網絡的支持變成了一個重要的功能。比如允許用戶使用第三方社交網絡的賬號,如Twitter,FaceBook,LinkedIn或新浪微博的賬號,直接登錄;或是讀取用戶在其它社交網站上的信息等。很多社交網站都提供開放API允許開發人員使用,不過需要開發人員瞭解OAuth等其他實現細節。Spring Social提供了一個可擴展的框架,允許開發人員很方便地與其他社交網絡平臺進行集成,同時也提供了流行社交平臺的相關API支持。

Spring AMQP

what

基於Spring框架的AMQP消息解決方案,提供模板化的發送和接收消息的抽象層,提供基於消息驅動的POJO的消息監聽等,很方便進行RabbitMQ程序的開發。

Spring Mobile

what

是Spring MVC的擴展,用來簡化手機上的Web應用開發,用於支持移動瀏覽的小框架。

Spring For Android

what

是Spring框架在移動領域的擴展,目標是簡化原生Android應用程序的開發。

Spring Web Flow

what

是Spring Web應用開發模塊棧的一部分,目標是成爲管理Web應用頁面流程的最佳方案。當你的應用需要複雜的導航控制,例如嚮導,在一個比較大的事務過程中去指導用戶經過一連串的步驟的時候,SWF將會是一個功能強大的控制器。

Spring Web Services

what

旨在促進首次合同服務開發,允許使用許多方式來操作XML有效負載來創建靈活的Web服務。WebService是基於網絡的,分佈式的模塊化組件,它執行特定的任務,遵守具體的技術規範,這些規範使得Web Service能與其它兼容的組件進行互操作。Webservice主要利用HTTP和SOAP協議使業務數據在Web上傳輸,SOAP通過HTTP調用業務對象執行遠程功能調用,Web用戶能夠使用SOAP和HTTP通過Web調用的方法來調用遠程對象的。

Spring LDAP

what

用於操作LDAP的Java框架,基於Spring的JdbcTemplate模式。這個框架能夠幫助開發人員簡化looking up, closing contexts, looping through namingEnumerations, encoding/decoding values與filters等操作。LDAP是輕量目錄訪問協議,LDAP以樹狀的層次結構來存儲數據。如果你對自頂向下的DNS樹或UNIX文件的目錄樹比較熟悉,也就很容易掌握LDAP目錄樹這個概念了。就像DNS的主機名那樣,LDAP目錄記錄的標識名(Distinguished Name, 簡稱DN)是用來讀取單個記錄,以及回溯到樹的頂部。

Spring Session

what

把Servlet容器實現的httpSession替換爲Spring-Session,專注於解決session管理問題,可簡單快速且無縫的集成到我們的應用中。支持的功能如下:
1. 輕易把會話存儲到第三方存儲容器,框架提供了Redis,JVM的Map,Mongo,gemfire,hazelcast,jdbc等多種存儲會話的容器的方式
2. 同一個瀏覽器同一個網站,支持多個會話問題
3. RESTful API,不依賴於Cookie。可通過標頭來傳遞sessionID
4. WebSocket和Spring-session結合,同步生命週期管理

Spring Shell

what

提供了一個交互式shell,可以使用基於Spring的編程模型來插入自己的自定義命令。Shell已經從Spring Roo項目中提取出來,賦予了強大的基礎和豐富的功能。Spring Shell的功能包括一個簡單的註釋驅動的編程模型來貢獻自定義命令使用Spring的classpath掃描功能作爲命令插件策略和命令開發的基礎。

Spring XD

what

是Pivotal的大數據產品,它結合了Spring Boot和Grails,組成Spring IO平臺的執行部分。儘管Spring XD利用了大量現存的Spring項目,但它是一種運行時環境,而不是一個類庫或者框架,它包含帶有服務器的bin目錄,你可以通過命令行啓動並與之交互。運行時可以運行在開發機上,客戶端自己的服務器上,AWS EC2上或者Cloud Foundry上。

Spring FLO

what

Flo幫助開發人員更輕鬆地構建軟件集成,提高開發速度和質量,解決組織需求。(for spring XD)

Spring Kafka

what

kafka時一種高吞吐量地分佈式發佈訂閱消息系統,它可以處理消費者規模的網站中的所有動作流數據。這種動作(網頁瀏覽,搜索和其它用戶的行動)是在現代網絡上的許多社會功能的一個關鍵因素。這些數據通常是由於吞吐量的要求而通過處理日誌和日誌聚合來解決。對於像Hadoop的一樣的日誌數據和離線分析系統,但又要求實時處理的限制,這是一個可行的解決方案。Kafka的目的是通過Hadoop的並行加載機制來統一線上和離線的消息處理,也是爲了通過集羣來提供實時的消費。

Spring State Machine

what

使用Spring框架下的狀態機概念創建的一種應用程序開發框架,它使得狀態機結構層次化,簡化了配置狀態機的過程。

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