Maven 依赖 spring-web 与 spring-webmvc

Posted

技术标签:

【中文标题】Maven 依赖 spring-web 与 spring-webmvc【英文标题】:Maven dependency spring-web vs spring-webmvc 【发布时间】:2012-11-12 02:11:18 【问题描述】:

以下依赖有什么区别?

<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

【问题讨论】:

【参考方案1】:

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

spring-webmvc 是 Spring MVC 的一个实现。 spring-webmvc depends on on spring-web,因此包含它会传递添加spring-web。您不必明确添加spring-web

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

【讨论】:

同意,+1。但罕见的情况:包括spring-webmvc 反过来又添加了spring-web,但是说如果你有spring-webmvc 版本为4.0.2,并且你添加另一个依赖项说swagger-springmvc 0.8.8 版本,那么它会添加spring-web 3.2.x 版本。在这种情况下,您可能会遇到类未找到异常,所以在这里,您必须明确添加 spring-web 和版本为 4.0.2。我今天遇到了这个 @spiderman 我会排除swagger-springmvc中的传递spring-web依赖 @tomasz-nurkiewicz spring-jms 和 spring-messaging 模块有什么区别 当你想构建一个将成为rest api的应用程序并且你根本不需要视图(jsp)时,你应该使用什么? spring-web 还是 spring-webmvc? @MohammadEghlima 在这种情况下使用 spring-web【参考方案2】:

来自官方文档: 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

【讨论】:

以上是关于Maven 依赖 spring-web 与 spring-webmvc的主要内容,如果未能解决你的问题,请参考以下文章

maven引入spring相关依赖

Spring——第一个Spring-Web项目(三层架构实现前后端数据交互)

Maven项目中springMVC的使用

Maven 找不到依赖项:提示错误'parent.relativePath'点在错误的本地 POM

@ResponseBody注解

如何防止spring-web的spring-boot自动配置?