Зависимость Maven Spring-Web против Spring-Webmvc

101

В чем разница между следующими зависимостями?

<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одиночку?

Махендран
источник

Ответы:

136

spring-web обеспечивает интеграцию с ядром HTTP, включая некоторые удобные фильтры сервлетов, Spring HTTP Invoker, инфраструктуру для интеграции с другими веб-фреймворками и технологиями HTTP, например Hessian, Burlap.

spring-webmvcявляется реализацией Spring MVC. spring-webmvc зависит от spring-web, таким образом , в том числе он будет транзитивно добавить spring-web. Вам не нужно добавлятьspring-web явно .

Вы должны полагаться только на то, spring-webесли вы не используете Spring MVC, но хотите воспользоваться другими веб-технологиями, которые поддерживает Spring.

Томаш Нуркевич
источник
11
Согласен, +1. Но сценарий редкого случая: включение spring-webmvcinturn добавляет spring-web, но скажем, если у вас есть версия spring-webmvc как 4.0.2, и вы добавляете другую зависимость, скажем, swagger-springmvcверсию 0.8.8, тогда она добавляет spring-webверсию 3.2.x. В этом случае вы можете получить исключения класса, не найденного, поэтому здесь вы должны явно добавить spring-webи версию 4.0.2. Я столкнулся с этим сегодня
паук
7
@spiderman Я бы исключил транзитивную spring-webзависимость вswagger-springmvc
Роджер
@ tomasz-nurkiewicz какая разница между Spring-JMS и Spring-Messaging Module
легенда
1
Если вы хотите создать приложение, которое будет api для отдыха, и вам вообще не понадобится view (jsp), что вы должны использовать? Spring-Web или Spring-Webmvc?
Мохаммад Эглима
1
@MohammadEghlima в этом случае используйте
Spring
7

Из официального документа: Модуль spring-web предоставляет базовые функции веб-ориентированной интеграции, такие как функция загрузки нескольких файлов и инициализация контейнера IoC с использованием слушателей сервлетов и контекста веб-приложения. Он также содержит HTTP-клиент и связанные с Интернетом части поддержки удаленного взаимодействия Spring.

Модуль spring-webmvc (также известный как модуль Web-Servlet) содержит Spring Model-View-Controller (MVC) и реализацию веб-служб REST для веб-приложений. Платформа Spring MVC обеспечивает четкое разделение кода модели предметной области и веб-форм и интегрируется со всеми другими функциями Spring Framework.

Модуль spring-webmvc-portlet (также известный как модуль Web-Portlet) предоставляет реализацию MVC для использования в среде Portlet и отражает функциональность модуля spring-webmvc на основе сервлетов.

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

LiLi
источник