Spring中的模块与应用场景详解
作者:艾江南
前言
控制反转(IoC)和依赖注入(DI)
IoC/DI 是 Spring 的核心设计模式,它的所有组件和功能,都是基于这一模式设计的。IoC 意味着你设计好的对象交给容器控制,而不是在你的对象内部直接控制,而各个对象之间的依赖关系,是在容器运行期间决定的,容器动态地将依赖关系注入到组件中,且不关心具体的对象或资源来自何处,这大大降低了对象间的耦合度。
一、Spring模块
Spring 框架的模块:
1. 核心模块
名称 | 功能 |
spring-core | 提供 IoC 和 DI 等功能 |
spring-beans | 提供 Bean 容器等功能 |
spring-context | 基于 core 和 beans 模块构建,扩展了功能 |
spring-context-support | 支持整合第三方工具 |
spring-expression | 提供 SpEL 表达式支持 |
2. AOP模块
名称 | 功能 |
spring-aop | 提供 AOP(面向切面编程)支持 |
spring-aspects | 提供 AspectJ 的集成 |
spring-instrumentation | 提供类植入和类加载器的实现 |
3. 消息模块
名称 | 功能 |
spring-messaging | 提供消息功能支持 |
4. 数据访问模块
名称 | 功能 |
spring-jdbc | 提供 JDBC 抽象层来代替原生 JDBC 功能 |
spring-tx | 提供编程式和声明式事务管理 |
spring-orm | 提供主流的 ORM 框架 API 支持 |
spring-oxm | 提供支持对象/XML映射抽象层 |
spring-jms | 提供支持生产和消费的消息功能 |
5. Web模块
名称 | 功能 |
spring-web | 提供 Web 功能支持 |
spring-webmvc | 提供 Web 应用程序的 MVC 和 REST Web Services 支持 |
spring-websocket | 提供 Web Socket 支持 |
6. 测试模块
名称 | 功能 |
spring-test | 提供 JUnit 或 TestNG 等主流单元测试框架的集成 |
二、集成功能
Spring 对一些常用的功能组件都会基于 IoC/DI 模式来进行封装,简化其使用方式,以便开发人员开箱即用,不仅可以提高开发效率,还降低了耦合,提高了测试性和可移植性。
1. 目标原则
目标:
- 为复杂的企业集成解决方案提供简单的模型
- 便于开发基于异步、消息驱动行为的应用
- 使现有 Spring 用户更直观、更循序渐进地使用
原则:
- 降低组件的耦合度,增加了模块化和可测试性
- 强制区分业务逻辑和组件集成逻辑
- 扩展点是抽象的,增加了扩展性和可移植性
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
三、应用场景
Spring 框架由多个模块构成,它不是一个全有或者全无的解决方案,我们完全可以按照需求使用它的全部或者部分特性。
1. 典型完整的 Spring Web 应用程序
Spring 完整使用场景:基于 Tomcat Servlet 容器,Web 层、业务层和数据持久层都使用 Spring 模块实现。
2. 使用第三方 Web 框架的应用程序
整合第三方 Web 框架:基于 Tomcat Servlet 容器,Web 层使用 Struts 等其他框架,业务层和数据持久层都使用 Spring 模块实现。
3. 基于 RPC 的应用程序
RPC 应用程序:基于 Tomcat Servlet 容器,使用Spring的 Hessian-,Rmi- 或HttpInvokerProxyFactoryBean 类构建远程调用程序。
4. 基于 EJB 的应用程序
EJB 应用程序:Spring 提供访问层和抽象层来管理 EJB。
比如我们通常使用的 SSM 框架和 SSH 框架就是 Spring 框架和第三方框架的组合形式:
框架 | Web 层 | 业务层 | 数据持久层 |
SSM | SpringMVC | Spring | MyBatis |
SSH | Struts | Spring | Hibernate |
不管我们怎么搭建应用程序框架,Spring 都能很好的集成到我们应用程序中。
到此这篇关于Spring中的模块与应用场景详解的文章就介绍到这了,更多相关Spring模块与应用场景内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!