Spring Framework - CCH0124/spring-sandbox GitHub Wiki
特性
非侵入性:使用 Spring Framework 開發應用程式時,Spring 對應用程式本身的結構影響非常小。對領域模型可以做到零污染;功能性組件也只需要使用幾個簡單的註解來標記,完全不會破壞原有結構,反而能將組件結構進一步簡化。這就使得基於 Spring Framework 開發應用程式時結構清晰、簡潔優雅。
控制反轉:IoC(Inversion of Control),反轉資源取得方向。把自己創造資源、向環境索取資源變成環境將資源準備好,基本上是資源注入。
面向切面程式設計:AOP(Aspect Oriented Programming),在不修改原始碼的基礎上增強程式碼功能。
容器:Spring IoC 是一個容器,因為它包含並且管理元件物件的生命週期。元件享受到了容器化的管理,替程式設計師屏蔽了元件創建過程中的大量細節,極大的降低了使用門檻,大幅度提高了開發效率。
組件化:Spring 實作了使用簡單的組件配置組合成一個複雜的應用。在 Spring 中可以使用 XML 和 Java 註解組合這些物件。這使得我們可以基於一個個功能明確、邊界清晰的元件有條不紊的建造超大型複雜應用系統。
一站式:在 IoC 和 AOP 的基礎上可以整合各種企業應用的開源框架和優秀的第三方類別庫。而 Spring 旗下的專案已經涵蓋了廣泛領域,許多方面的功能性需求可以在 Spring Framework 的基礎上全部使用 Spring 來實現。
Spring 組成
- Spring Core(Core Container)
提供了 IOC、DI、Bean 配置裝載所建立的核心實作。核心概念:Beans、BeanFactory、BeanDefinitions、ApplicationContext。
- spring-core :IOC 和 DI 的基本實現
- spring-beans:BeanFactory 和 Bean 的裝配管理(BeanFactory)
- spring-context:Spring context 上下文,即 IOC 容器 (AppliactionContext)
- spring-expression:Spring Expression Language
- Spring AOP
- spring-aop:切面程式設計的應用模組,整合 ASM,CGLib,JDK Proxy
- spring-aspects:整合 AspectJ,AOP 應用框架
- spring-instrument:動態 Class Loading 模組
- Spring Data Access
- spring-jdbc:spring 對 JDBC 的封裝,用於簡化 jdbc 操作
- spring-orm:java 物件與資料庫資料的映射框架
- spring-oxm:物件與 xml 檔案的映射框架
- spring-jms: Spring 對 Java Message Service 的封裝,用於服務之間相互通信
- spring-tx:spring jdbc 事務管理
- Spring Web
- spring-web:最基礎的 web 支持,建立於 spring-context 之上,透過 servlet 或 listener 來初始化 IOC 容器
- spring-webmvc:實作 web mvc
- spring-websocket:與前端的全雙工通訊協議
- spring-webflux:Spring 5.0 提供的,用於取代傳統 java servlet,非阻塞式 Reactive Web 框架,非同步,非阻塞,事件驅動的服務
- Spring Message
- Spring-messaging:spring 4.0 提供的,為 Spring 整合一些基礎的封包傳送服務
- Spring test
- spring-test:整合測試支持,主要是對junit的封裝