Spring中的模塊與應(yīng)用場(chǎng)景詳解
前言
控制反轉(zhuǎn)(IoC)和依賴注入(DI)
IoC/DI 是 Spring 的核心設(shè)計(jì)模式,它的所有組件和功能,都是基于這一模式設(shè)計(jì)的。IoC 意味著你設(shè)計(jì)好的對(duì)象交給容器控制,而不是在你的對(duì)象內(nèi)部直接控制,而各個(gè)對(duì)象之間的依賴關(guān)系,是在容器運(yùn)行期間決定的,容器動(dòng)態(tài)地將依賴關(guān)系注入到組件中,且不關(guān)心具體的對(duì)象或資源來(lái)自何處,這大大降低了對(duì)象間的耦合度。
一、Spring模塊
Spring 框架的模塊:
1. 核心模塊
名稱 | 功能 |
spring-core | 提供 IoC 和 DI 等功能 |
spring-beans | 提供 Bean 容器等功能 |
spring-context | 基于 core 和 beans 模塊構(gòu)建,擴(kuò)展了功能 |
spring-context-support | 支持整合第三方工具 |
spring-expression | 提供 SpEL 表達(dá)式支持 |
2. AOP模塊
名稱 | 功能 |
spring-aop | 提供 AOP(面向切面編程)支持 |
spring-aspects | 提供 AspectJ 的集成 |
spring-instrumentation | 提供類(lèi)植入和類(lèi)加載器的實(shí)現(xiàn) |
3. 消息模塊
名稱 | 功能 |
spring-messaging | 提供消息功能支持 |
4. 數(shù)據(jù)訪問(wèn)模塊
名稱 | 功能 |
spring-jdbc | 提供 JDBC 抽象層來(lái)代替原生 JDBC 功能 |
spring-tx | 提供編程式和聲明式事務(wù)管理 |
spring-orm | 提供主流的 ORM 框架 API 支持 |
spring-oxm | 提供支持對(duì)象/XML映射抽象層 |
spring-jms | 提供支持生產(chǎn)和消費(fèi)的消息功能 |
5. Web模塊
名稱 | 功能 |
spring-web | 提供 Web 功能支持 |
spring-webmvc | 提供 Web 應(yīng)用程序的 MVC 和 REST Web Services 支持 |
spring-websocket | 提供 Web Socket 支持 |
6. 測(cè)試模塊
名稱 | 功能 |
spring-test | 提供 JUnit 或 TestNG 等主流單元測(cè)試框架的集成 |
二、集成功能
Spring 對(duì)一些常用的功能組件都會(huì)基于 IoC/DI 模式來(lái)進(jìn)行封裝,簡(jiǎn)化其使用方式,以便開(kāi)發(fā)人員開(kāi)箱即用,不僅可以提高開(kāi)發(fā)效率,還降低了耦合,提高了測(cè)試性和可移植性。
1. 目標(biāo)原則
目標(biāo):
- 為復(fù)雜的企業(yè)集成解決方案提供簡(jiǎn)單的模型
- 便于開(kāi)發(fā)基于異步、消息驅(qū)動(dòng)行為的應(yīng)用
- 使現(xiàn)有 Spring 用戶更直觀、更循序漸進(jìn)地使用
原則:
- 降低組件的耦合度,增加了模塊化和可測(cè)試性
- 強(qiáng)制區(qū)分業(yè)務(wù)邏輯和組件集成邏輯
- 擴(kuò)展點(diǎn)是抽象的,增加了擴(kuò)展性和可移植性
2. 支持組件
- Endpoint
- AMQP
- Spring ApplicationEvent
- File
- FTP/FTPS Adapters
- HTTP
- JDBC
- JPA
- JMS
- MongoDb
- MQTT
- Redis
- Resource
- RMI
- RSocket
- SFTP Adapters
- STOMP
- Stream
- Syslog
- TCP and UDP
- WebFlux
- WebSockets
- Web Services
- XML
- Zookeeper
三、應(yīng)用場(chǎng)景
Spring 框架由多個(gè)模塊構(gòu)成,它不是一個(gè)全有或者全無(wú)的解決方案,我們完全可以按照需求使用它的全部或者部分特性。
1. 典型完整的 Spring Web 應(yīng)用程序
Spring 完整使用場(chǎng)景:基于 Tomcat Servlet 容器,Web 層、業(yè)務(wù)層和數(shù)據(jù)持久層都使用 Spring 模塊實(shí)現(xiàn)。
2. 使用第三方 Web 框架的應(yīng)用程序
整合第三方 Web 框架:基于 Tomcat Servlet 容器,Web 層使用 Struts 等其他框架,業(yè)務(wù)層和數(shù)據(jù)持久層都使用 Spring 模塊實(shí)現(xiàn)。
3. 基于 RPC 的應(yīng)用程序
RPC 應(yīng)用程序:基于 Tomcat Servlet 容器,使用Spring的 Hessian-,Rmi- 或HttpInvokerProxyFactoryBean 類(lèi)構(gòu)建遠(yuǎn)程調(diào)用程序。
4. 基于 EJB 的應(yīng)用程序
EJB 應(yīng)用程序:Spring 提供訪問(wèn)層和抽象層來(lái)管理 EJB。
比如我們通常使用的 SSM 框架和 SSH 框架就是 Spring 框架和第三方框架的組合形式:
框架 | Web 層 | 業(yè)務(wù)層 | 數(shù)據(jù)持久層 |
SSM | SpringMVC | Spring | MyBatis |
SSH | Struts | Spring | Hibernate |
不管我們?cè)趺创罱☉?yīng)用程序框架,Spring 都能很好的集成到我們應(yīng)用程序中。
到此這篇關(guān)于Spring中的模塊與應(yīng)用場(chǎng)景詳解的文章就介紹到這了,更多相關(guān)Spring模塊與應(yīng)用場(chǎng)景內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot中@ConditionalOnProperty的使用及作用詳解
這篇文章主要介紹了SpringBoot中@ConditionalOnProperty的使用及作用詳解,@ConditionalOnProperty通過(guò)讀取本地配置文件中的值來(lái)判斷 某些 Bean 或者 配置類(lèi) 是否加入spring 中,需要的朋友可以參考下2024-01-01Java 關(guān)于eclipse導(dǎo)入項(xiàng)目發(fā)生的問(wèn)題及解決方法(推薦)
下面小編就為大家分享一篇Java 關(guān)于eclipse導(dǎo)入項(xiàng)目發(fā)生的問(wèn)題及解決方法(推薦),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2017-12-12Java8新特性之空指針異常的克星Optional類(lèi)的實(shí)現(xiàn)
這篇文章主要介紹了Java8新特性之空指針異常的克星Optional類(lèi)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10Spring線程池ThreadPoolTaskExecutor的用法及說(shuō)明
這篇文章主要介紹了Spring線程池ThreadPoolTaskExecutor的用法及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07mybatis動(dòng)態(tài)生成sql語(yǔ)句的實(shí)現(xiàn)示例
在MyBatis中,動(dòng)態(tài)SQL是一個(gè)非常重要的特性,它允許我們根據(jù)條件動(dòng)態(tài)地生成SQL語(yǔ)句,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-11-11詳細(xì)學(xué)習(xí)Java Cookie技術(shù)(用戶登錄、瀏覽、訪問(wèn)權(quán)限)
這篇文章主要為大家詳細(xì)介紹了Java Cookie技術(shù),顯示用戶上次登錄的時(shí)間、顯示用戶最近瀏覽的若干個(gè)圖片(按比例縮放)等,感興趣的小伙伴們可以參考一下2016-08-08