2012-11-23 78 views
66

以下依賴關係有什麼區別?Maven依賴關係spring-web vs spring-webmvc

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

如果我有spring-webmvc單獨然後spring-web默認添加。

我們什麼時候應該單獨使用spring-web

回答

90

spring-web提供核心HTTP集成,包括一些方便的Servlet過濾器,Spring HTTP Invoker,與其他Web框架和HTTP技術集成的基礎結構,例如粗麻布,粗麻布。

spring-webmvc是Spring MVC的一個實現。 spring-webmvcdepends onspring-web,因此包括它將會過渡地添加spring-web。您不必明確添加spring-web

如果您不使用Spring MVC,但想要利用Spring支持的其他Web相關技術,則只應該依賴於spring-web

+3

同意,+1。但是很少出現這種情況:包含'spring-webmvc' inturn會添加'spring-web',但是如果你的spring-webmvc版本是4.0.2,並且你添加了另一個依賴項'swagger-springmvc'版本0.8.8,然後添加3.2.x的'spring-web'版本。在這種情況下,你可能會得到類沒有發現的異常,所以在這裏,你必須顯式地添加'spring-web'和版本爲4.0.2。我今天遇到這個 – spiderman

+2

@spiderman我會在'swagger-springmvc'中排除傳遞式'spring-web'依賴 – Roger