Dependencia de Maven spring-web vs spring-webmvc

100

¿Cuál es la diferencia entre las siguientes dependencias?

<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>

Si incluyo spring-webmvcsolo, entonces spring-webse agrega implícitamente.

¿Cuándo debemos usar spring-websolo?

Mahendran
fuente

Respuestas:

134

spring-web proporciona integración HTTP central, incluidos algunos filtros Servlet útiles, Spring HTTP Invoker, infraestructura para integrarse con otros marcos web y tecnologías HTTP, por ejemplo, Hessian, Burlap.

spring-webmvces una implementación de Spring MVC. spring-webmvc depende de spring-web, entre ellos por lo que se sumará transitiva spring-web. No tiene que agregar spring-webexplícitamente.

Solo debe depender de spring-websi no usa Spring MVC pero desea aprovechar otras tecnologías relacionadas con la web que admite Spring.

Tomasz Nurkiewicz
fuente
10
De acuerdo, +1. Pero escenario de caso raro: Incluir spring-webmvcinturn agrega spring-web, pero digamos que si tiene la versión de spring-webmvc como 4.0.2 y agrega otra dependencia, digamos la swagger-springmvcversión de 0.8.8, entonces agrega la spring-webversión de 3.2.x. En este caso, es posible que obtenga excepciones de clase no encontrada, por lo que aquí debe agregar explícitamente una spring-webversión como 4.0.2. Me encontré con esto hoy
Spiderman
7
@spiderman Yo excluiría la spring-webdependencia transitiva enswagger-springmvc
Roger
@ tomasz-nurkiewicz ¿cuál es la diferencia entre spring-jms y spring-messaging module?
leyenda
1
Cuando desee crear una aplicación que será una api de descanso y no necesitará ver (jsp) en absoluto, ¿qué debe usar? spring-web o spring-webmvc?
Mohammad Eghlima
1
@MohammadEghlima en este caso use spring-web
leeCoder
7

Del documento oficial: el módulo spring-web proporciona funciones básicas de integración orientadas a la web, como la funcionalidad de carga de archivos de varias partes y la inicialización del contenedor de IoC utilizando oyentes de Servlet y un contexto de aplicación orientado a la web. También contiene un cliente HTTP y las partes relacionadas con la web del soporte remoto de Spring.

El módulo spring-webmvc (también conocido como módulo Web-Servlet) contiene la implementación del modelo-vista-controlador (MVC) y los servicios web REST de Spring para aplicaciones web. El marco MVC de Spring proporciona una separación limpia entre el código del modelo de dominio y los formularios web y se integra con todas las demás características del marco Spring.

El módulo spring-webmvc-portlet (también conocido como módulo Web-Portlet) proporciona la implementación MVC que se utilizará en un entorno Portlet y refleja la funcionalidad del módulo spring-webmvc basado en Servlet.

https://docs.spring.io/spring/docs/4.3.22.RELEASE/spring-framework-reference/htmlsingle/#overview-web

LiLi
fuente