Zależność Mavena Spring-Web vs Spring-Webmvc

100

Jaka jest różnica między następującymi zależnościami?

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

Jeśli uwzględnię spring-webmvcsam, spring-webzostanie dodany niejawnie.

Kiedy powinniśmy używać spring-websamodzielnie?

Mahendran
źródło

Odpowiedzi:

134

spring-web zapewnia podstawową integrację HTTP, w tym kilka przydatnych filtrów serwletów, Spring HTTP Invoker, infrastrukturę do integracji z innymi frameworkami sieciowymi i technologiami HTTP, np. Hessian, Burlap.

spring-webmvcjest implementacją Spring MVC. spring-webmvc zależy na spring-webtym samym będzie on przechodni dodać spring-web. Nie musisz dodawać spring-webjawnie.

Powinieneś polegać tylko spring-webwtedy, gdy nie używasz Spring MVC, ale chcesz skorzystać z innych technologii internetowych, które obsługuje Spring.

Tomasz Nurkiewicz
źródło
10
Zgadzam się, +1. Ale scenariusz rzadki: Uwzględnienie spring-webmvcdodawania zmian spring-web, ale powiedzmy, że masz wersję Spring-Webmvc jako 4.0.2 i dodajesz kolejną zależność, powiedzmy swagger-springmvcwersję 0.8.8, to dodaje spring-webwersję 3.2.x. W tym przypadku możesz otrzymać wyjątki klasy nie znaleziono, więc tutaj musisz jawnie dodać spring-webi wersję jako 4.0.2. Spotkałem to dzisiaj
spiderman,
7
@spiderman Wykluczyłbym spring-webzależność przechodnią wswagger-springmvc
Roger
@ tomasz-nurkiewicz jaka jest różnica między spring-jms a spring-messaging module
legenda
1
Jeśli chcesz zbudować aplikację, która będzie restowym api i nie będziesz w ogóle potrzebować widoku (jsp), czego powinieneś użyć? spring-web czy spring-webmvc?
Mohammad Eghlima
1
@MohammadEghlima w tym przypadku użyj spring-web
leeCoder
7

Z oficjalnego dokumentu: Moduł Spring-Web zapewnia podstawowe funkcje integracji zorientowanej na sieć, takie jak funkcja przesyłania plików wieloczęściowych i inicjalizacja kontenera IoC przy użyciu detektorów serwletów i kontekstu aplikacji zorientowanej na sieć. Zawiera również klienta HTTP i powiązane z sieciami części obsługi zdalnej Springa.

Moduł spring-webmvc (znany również jako moduł Web-Servlet) zawiera implementację kontrolera widoku modelu (MVC) Springa i usług REST Web Services dla aplikacji internetowych. Struktura MVC Springa zapewnia czystą separację między kodem modelu domeny a formularzami internetowymi i integruje się ze wszystkimi innymi funkcjami Spring Framework.

Moduł spring-webmvc-portlet (znany również jako moduł Web-Portlet) zapewnia implementację MVC do użycia w środowisku portletów i odzwierciedla funkcjonalność opartego na serwletach modułu spring-webmvc.

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

LiLi
źródło