Maven dependency spring-web vs spring-webmvc

What is the difference between the following dependencies?

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>3.1.2.RELEASE</version>
</dependency>

vs

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>3.1.2.RELEASE</version>
</dependency>

If I include spring-webmvc alone then spring-web is implicitly added.

When should we use spring-web alone?

52670 次浏览

spring-web提供了核心 HTTP 集成,包括一些方便的 Servlet 过滤器、 Spring HTTP Invoker、与其他 Web 框架集成的基础设施和 HTTP 技术,例如 Hessian、 Burlap。

spring-webmvc is an implementation of Spring MVC. spring-webmvc 取决于 on spring-web, thus including it will transitively add spring-web. You don't have to add spring-web explicitly.

如果您不使用 Spring MVC,但是希望利用 Spring 支持的其他 Web 相关技术,那么应该只依赖于 spring-web

From the official doc: Spring-web 模块提供了基本的面向 Web 的集成特性,比如多部分文件上传功能,以及使用 Servlet 侦听器和面向 Web 的应用程序上下文初始化 IoC 容器。它还包含一个 HTTP 客户端和 Spring 远程处理支持中与 web 相关的部分。

Spring-webmvc 模块(也称为 Web-Servlet 模块)包含 Spring 的模型-视图-控制器(MVC)和针对 Web 应用程序的 REST Web Services 实现。Spring 的 MVC 框架提供了领域模型代码和 Web 表单之间的清晰分离,并且集成了 Spring 框架的所有其他特性。

Spring-webmvc-Portlet 模块(也称为 Web-Portlet 模块)提供了在 Portlet 环境中使用的 MVC 实现,并反映了基于 Servlet 的 spring-webmvc 模块的功能。

Https://docs.spring.io/spring/docs/4.3.22.release/spring-framework-reference/htmlsingle/#overview-web