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的主要内容,如果未能解决你的问题,请参考以下文章
Spring——第一个Spring-Web项目(三层架构实现前后端数据交互)