Maven залежність spring-web vs spring-webmvc


100

Яка різниця між наступними залежностями?

<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поодинці?

Відповіді:


134

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

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

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


10
Погодьтеся, +1. Але рідкісний сценарій: Включаючи spring-webmvcдодавання inturn spring-web, але скажіть, якщо у вас версія verm-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 та модулем весняних повідомлень
легенда

1
Коли ви хочете створити додаток, який буде api для відпочинку, і вам зовсім не знадобиться view (jsp), що вам слід використовувати? spring-web чи spring-webmvc?
Мохаммед Егліма

1
@MohammadEghlima в цьому випадку використовуйте spring-web
leeCoder

7

Від офіційного документа: Весняний веб-модуль надає основні веб-орієнтовані функції інтеграції, такі як функція завантаження файлів у багато частинах та ініціалізація контейнера IoC за допомогою слухачів сервлетів та веб-орієнтованого контексту програми. Він також містить клієнт HTTP та пов'язані з веб-частинами віддалену підтримку Spring.

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

Модуль-портлет spring-webmvc (також відомий як модуль Web-Portlet) забезпечує реалізацію MVC для використання в середовищі Портлет і відображає функціональність модуля Spring-webmvc на базі сервлетів.

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.