Maven依赖spring-web vs spring-webmvc


100

以下依赖项之间有什么区别?

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

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

如果我spring-webmvc单独包含,spring-web则被隐式添加。

我们spring-web什么时候应该单独使用?

Answers:


134

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

spring-webmvc是Spring MVC的实现。spring-webmvc 依赖于spring-web,因此包括它会传递性增加spring-web。您不必spring-web显式添加。

spring-web如果您不使用Spring MVC,但想利用Spring支持的其他与Web相关的技术,则应该仅依赖于此。


10
同意,+ 1。但极少数情况:包含spring-webmvcinturn spring-web,但是说如果您的spring-webmvc版本为4.0.2,并添加另一个依赖项,例如swagger-springmvc版本0.8.8,则它添加了3.2.x spring-web版本。在这种情况下,您可能会得到未找到类的异常,因此,在这里,您必须显式添加spring-web版本4.0.2。我今天遇到了
蜘蛛侠2014年

7
@spiderman我会spring-webswagger-springmvc
罗杰

@ tomasz-nurkiewicz spring-jms和spring-messaging模块之间有什么区别
传说

1
当您要构建一个将成为Rest API的应用程序并且完全不需要View(jsp)时,应该使用什么?spring-web或spring-webmvc?
Mohammad Eghlima

1
@MohammadEghlima在这种情况下使用spring-web
leeCoder

7

摘自官方文档:spring-web模块提供了基本的面向Web的集成功能,例如多部分文件上传功能以及使用Servlet侦听器和面向Web的应用程序上下文对IoC容器的初始化。它还包含HTTP客户端和Spring远程支持的Web相关部分。

spring-webmvc模块(也称为Web-Servlet模块)包含Spring的模型视图控制器(MVC)和针对Web应用程序的REST Web服务实现。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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.