Dependência do Maven spring-web vs spring-webmvc


100

Qual é a diferença entre as seguintes dependências?

<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 eu incluir spring-webmvcsozinho, então spring-webserá adicionado implicitamente.

Quando devemos usar spring-websozinhos?

Respostas:


134

spring-web fornece integração HTTP central, incluindo alguns filtros Servlet úteis, Spring HTTP Invoker, infraestrutura para integração com outras estruturas da web e tecnologias HTTP, por exemplo, Hessian, Burlap.

spring-webmvcé uma implementação do Spring MVC. spring-webmvc depende em spring-web, incluindo, portanto, ele vai transitively adicionar spring-web. Você não tem que adicionar spring-webexplicitamente.

Você deve depender apenas spring-webse não usa Spring MVC, mas deseja tirar vantagem de outras tecnologias relacionadas à web que o Spring suporta.


10
Concordo, +1. Mas cenário de caso raro: Incluindo spring-webmvcinturn adiciona spring-web, mas digamos que se você tiver a versão spring-webmvc como 4.0.2, e você adicionar outra dependência, digamos, swagger-springmvcversão 0.8.8, então ele adiciona a spring-webversão 3.2.x. Nesse caso, você pode obter exceções de classe não encontrada. Portanto, aqui, você deve adicionar explicitamente uma spring-webversão como 4.0.2. Eu encontrei isso hoje
aranha

7
@spiderman, eu excluiria a spring-webdependência transitiva emswagger-springmvc
Roger,

@ tomasz-nurkiewicz qual a diferença entre spring-jms e spring-messaging module
legenda

1
Quando você deseja construir um aplicativo que será uma API de descanso e não precisará do view (jsp), o que deve ser usado? spring-web ou spring-webmvc?
Mohammad Eghlima

1
@MohammadEghlima, neste caso, use spring-web
leeCoder

7

Do documento oficial: O módulo spring-web fornece recursos básicos de integração orientados para a web, como a funcionalidade de upload de arquivo multipartes e a inicialização do contêiner IoC usando ouvintes Servlet e um contexto de aplicativo orientado para a web. Ele também contém um cliente HTTP e as partes relacionadas à web do suporte remoto do Spring.

O módulo spring-webmvc (também conhecido como módulo Web-Servlet) contém o model-view-controller (MVC) do Spring e implementação de REST Web Services para aplicativos da web. A estrutura MVC do Spring fornece uma separação clara entre o código do modelo de domínio e os formulários da web e se integra com todos os outros recursos do Spring Framework.

O módulo spring-webmvc-portlet (também conhecido como módulo Web-Portlet) fornece a implementação MVC a ser usada em um ambiente de Portlet e espelha a funcionalidade do módulo spring-webmvc baseado em Servlet.

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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.