創建Spring的主要目的是用來替代更加重量級的企業級Java技術,尤其是EJB.
相對於EJB來說,Spring提供了更加輕量級和簡單的編程模型.它增強了簡單老式Java對象(Plain Old Java object, POJO)的功能,
使其具備了之前只有EJB和其它企業級Java規范才具有的功能.
為了降低Java開發的復雜性,Spring采取了以下4種關鍵策略:
- 基於POJO的輕量級和最小侵入性編程.
- 通過依賴注入和面向接口實現松偶合.
- 基於切面和慣例進行聲明式編程.
- 通過切面和模板減少樣板式代碼.
DI能夠讓相互協作的軟件組件保持松散耦合,而面向切面編程(aspect-oriented programming,AOP)允許你把遍布應用各處的功能
分離出來形成可重用的組件.
除了DI,Spring對AOP的支持可以幫助應用將散落在各處的邏輯匯集於一處 ---- 切面. 當Spring 裝配bean的時候,這些切面能夠在
運行期編織起來,這樣就能非常有效地賦予bean新的行為.
DI和AOP是Spring框架最核心的部分,因此只有理解了如何應用Spring最關鍵的功能,你才有能力使用Spring框架的其它功能.
Spring Portfolio (Spring開發的其它模塊匯總) 中的項目簡介: 可查閱 https://spring.io/projects
- Spring Web Flow
Spring Web Flow 建立於Spring MVC框架之上,它為基於流程的會話式Web應用(購物車或向導功能)提供了支持.
- Spring Web Service
雖然核心的Spring框架提供了將Spring bean以聲明的方式發布為Web Service的功能,但是這些服務是基於一個具有爭議性的架構(拙劣的契約后置模型)之上而構建的.
這些服務的契約由bean的接口來決定.Spring Web Service提供了契約優先的Web Service模型,服務的實現都是為了滿足服務的契約而編寫的.(...)
- Spring Security
安全對於許多應用都是一個非常關鍵的切面,利用Spring AOP, Spring Security為Spring應用提供了聲明式的安全機制.
- Spring Integration
許多企業級應用都需要與其它應用進行交互, Spring Integration提供了多種通用應用集成模式的Spring聲明式風格實現.
- Spring Batch
當我們需要對數據進行大量操作時,沒有任何技術可以比批處理更勝任這種場景.如果需要開發一個批處理應用,你可以通過Spring Batch,使用Spring強大的面向POJO的編程模型.
- Spring Data
Spring Data使得在Spring中使用任何數據庫都變得非常容易.盡管關系型數據庫統治企業級應用多年,但是現代化的應用正在認識到並不是所有的數據都適合放在一張表中的行和列中.
一種新的數據庫種類,通常被稱之為NoSQL數據庫,提供了使用數據的新方法,這些方法會比傳統的關系型數據庫更為合適.
不管是使用文檔數據庫,如MongoDB,圖數據庫,如Neo4j,還是傳統的關系型數據庫,Spring Data都為持久化提供了一種簡單的編程模型.這包括為多種數據庫類型提供了一種自動化的
Repository機制,它負責為你創建Repository的實現.
- Spring LDAP(Light Directory Access Portocol),它是基於X.500標准的輕量級目錄訪問協議。
目錄是一個為查詢、瀏覽和搜索而優化的數據庫,它成樹狀結構組織數據,類似文件目錄一樣。
目錄數據庫和關系數據庫不同,它有優異的讀性能,但寫性能差,並且沒有事務處理、回滾等復雜功能,不適於存儲修改頻繁的數據。所以目錄天生是用來查詢的,就好象它的名字一樣。
LDAP目錄服務是由目錄數據庫和一套訪問協議組成的系統。
- Spring Social
關於社交網絡的擴展模塊.Spring Social更多的是關注連接(connect),而不是社交(social).它能夠幫助你通過REST API連接Spring應用,其中有些Spring應用可能原本並沒有任何社交方面
的功能目標.
- Spring Mobile
移動應用是另一個引人矚目的軟件開發領域.Spring Mobile是Spring MVC新的擴展模塊,用於支持移動Web應用開發.
- Spring for Android
與Spring Mobile相關項目,旨在通過Spring框架為開發基於Android設備的本地應用提供某些簡單的支持.最初,這個項目提供了Spring RestTemplate的一個可以用於Android應用之中的版本.
它還能與Spring Social協作,使得原生應用可以通過REST API進行社交網絡的連接.
- Spring Boot
Spring極大地簡化了眾多的編程任務,減少甚至消除了很多樣板式代碼,如果沒有Spring的話,在日常工作中你不得不編寫這樣的樣板式代碼.
Spring Boot是一個嶄新的令人興奮的項目,它以Spring的視角,致力於簡化Spring自身.
Spring Boot大量依賴於自動配置技術,它能夠消除大部分(在很多場景中,甚至是全部)Spring配置.它還提供了多個Starter項目,不管你使用Maven還是Gradle,這都能減少Spring工程構建文件的大小.