Maven dependency spring-web vs spring-webmvc
SpringMavenSpring MvcSpring Problem Overview
What is the difference between the following dependencies?
<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>
If I include spring-webmvc
alone then spring-web
is implicitly added.
When should we use spring-web
alone?
Spring Solutions
Solution 1 - Spring
spring-web
provides core HTTP integration, including some handy Servlet filters, Spring HTTP Invoker, infrastructure to integrate with other web frameworks and HTTP technologies e.g. Hessian, Burlap.
spring-webmvc
is an implementation of Spring MVC. spring-webmvc
depends on on spring-web
, thus including it will transitively add spring-web
. You don't have to add spring-web
explicitly.
You should depend only on spring-web
if you don't use Spring MVC but want to take advantage of other web-related technologies that Spring supports.
Solution 2 - Spring
From the official doc: The spring-web module provides basic web-oriented integration features such as multipart file upload functionality and the initialization of the IoC container using Servlet listeners and a web-oriented application context. It also contains an HTTP client and the web-related parts of Spring’s remoting support.
The spring-webmvc module (also known as the Web-Servlet module) contains Spring’s model-view-controller (MVC) and REST Web Services implementation for web applications. Spring’s MVC framework provides a clean separation between domain model code and web forms and integrates with all of the other features of the Spring Framework.
The spring-webmvc-portlet module (also known as the Web-Portlet module) provides the MVC implementation to be used in a Portlet environment and mirrors the functionality of the Servlet-based spring-webmvc module.