Зависимость от Maven spring -web vs spring -webmvc

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

<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-webmvc то spring-webmvc spring-web неявно добавляется.

Когда мы должны использовать spring-web одиночку?

Ответ 1

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

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

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

Ответ 2

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

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

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

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