Dipendenza da Maven spring-web vs spring-webmvc


100

Qual è la differenza tra le seguenti dipendenze?

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

Se includo spring-webmvcda solo, spring-webviene aggiunto implicitamente.

Quando dovremmo usare spring-webda solo?

Risposte:


134

spring-web fornisce l'integrazione HTTP di base, inclusi alcuni utili filtri Servlet, Spring HTTP Invoker, infrastruttura per l'integrazione con altri framework Web e tecnologie HTTP, ad esempio Hessian, Burlap.

spring-webmvcè un'implementazione di Spring MVC. spring-webmvc dipende da su spring-web, compreso così sarà transitivamente aggiungere spring-web. Non devi aggiungere spring-webesplicitamente.

Dovresti dipendere solo spring-webse non usi Spring MVC ma vuoi sfruttare altre tecnologie relative al web supportate da Spring.


10
D'accordo, +1. Ma uno scenario raro: includendo spring-webmvcinturn aggiunge spring-web, ma supponiamo che se hai la versione spring-webmvc come 4.0.2 e aggiungi un'altra dipendenza, ad esempio swagger-springmvcversione 0.8.8, allora aggiunge la spring-webversione 3.2.x. In questo caso potresti ottenere eccezioni di classe non trovata, quindi qui, devi aggiungere esplicitamente una spring-webversione come 4.0.2. Ho incontrato questo oggi
Spiderman

7
@spiderman escluderei la spring-webdipendenza transitiva inswagger-springmvc
Roger

@ tomasz-nurkiewicz qual è la differenza tra spring-jms e modulo di messaggistica di primavera
legenda

1
Quando vuoi costruire un'applicazione che sarà un'API di riposo e non avrai affatto bisogno di view (jsp), cosa dovresti usare? spring-web o spring-webmvc?
Mohammad Eghlima

1
@MohammadEghlima in questo caso usa spring-web
leeCoder

7

Dal documento ufficiale: il modulo spring-web fornisce funzionalità di integrazione orientate al web di base come la funzionalità di caricamento di file in più parti e l'inizializzazione del contenitore IoC utilizzando ascoltatori servlet e un contesto applicativo orientato al web. Contiene anche un client HTTP e le parti relative al web del supporto remoto di Spring.

Il modulo spring-webmvc (noto anche come modulo Web-Servlet) contiene il model-view-controller (MVC) di Spring e l'implementazione dei servizi Web REST per le applicazioni web. Il framework MVC di Spring offre una netta separazione tra codice del modello di dominio e moduli Web e si integra con tutte le altre funzionalità di Spring Framework.

Il modulo spring-webmvc-portlet (noto anche come modulo Web-Portlet) fornisce l'implementazione MVC da utilizzare in un ambiente Portlet e rispecchia la funzionalità del modulo spring-webmvc basato su Servlet.

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.