Dépendance Maven Spring-Web vs Spring-Webmvc

100

Quelle est la différence entre les dépendances suivantes?

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>3.1.2.RELEASE</version>
</dependency>

contre

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
    <version>3.1.2.RELEASE</version>
</dependency>

Si j'inclus spring-webmvcseul, alors spring-webest implicitement ajouté.

Quand devrions-nous utiliser spring-webseuls?

Mahendran
la source

Réponses:

134

spring-web fournit une intégration HTTP de base, y compris des filtres de servlet pratiques, Spring HTTP Invoker, une infrastructure à intégrer à d'autres frameworks Web et technologies HTTP, par exemple Hessian, Burlap.

spring-webmvcest une implémentation de Spring MVC. spring-webmvc dépend de spring-web, y compris donc il transitive ajouter spring-web. Vous n'avez pas à ajouter spring-webexplicitement.

Vous ne devriez dépendre que spring-websi vous n'utilisez pas Spring MVC mais que vous souhaitez tirer parti d'autres technologies Web prises en charge par Spring.

Tomasz Nurkiewicz
la source
10
D'accord, +1. Mais scénario de cas rare: y compris spring-webmvcinturn ajoute spring-web, mais disons que si vous avez la version spring-webmvc comme 4.0.2, et que vous ajoutez une autre dépendance, par exemple la swagger-springmvcversion 0.8.8, alors il ajoute la spring-webversion 3.2.x. Dans ce cas, vous pourriez obtenir des exceptions de classe non trouvée, donc ici, vous devez explicitement ajouter une spring-webversion 4.0.2. J'ai rencontré ça aujourd'hui
Spiderman
7
@spiderman J'exclurais la spring-webdépendance transitive dansswagger-springmvc
Roger
@ tomasz-nurkiewicz Quelle est la différence entre spring-jms et spring-messaging module
légende
1
Lorsque vous souhaitez créer une application qui sera une API de repos et que vous n'aurez pas du tout besoin de view (jsp), que devez-vous utiliser? spring-web ou spring-webmvc?
Mohammad Eghlima
1
@MohammadEghlima dans ce cas, utilisez spring-web
leeCoder
7

Extrait de la documentation officielle: Le module spring-web fournit des fonctionnalités d'intégration de base orientées Web telles que la fonctionnalité de téléchargement de fichiers en plusieurs parties et l'initialisation du conteneur IoC à l'aide d'écouteurs de servlet et d'un contexte d'application orienté Web. Il contient également un client HTTP et les parties Web de la prise en charge de la communication à distance de Spring.

Le module spring-webmvc (également connu sous le nom de module Web-Servlet) contient l'implémentation MVC (Model-View-Controller) de Spring et des services Web REST pour les applications Web. Le framework MVC de Spring fournit une séparation nette entre le code de modèle de domaine et les formulaires Web et s'intègre à toutes les autres fonctionnalités de Spring Framework.

Le module spring-webmvc-portlet (également connu sous le nom de module Web-Portlet) fournit l'implémentation MVC à utiliser dans un environnement de portlet et reflète la fonctionnalité du module spring-webmvc basé sur un servlet.

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

LiLi
la source