2012-11-23 27 views
66

Sự khác biệt giữa các phụ thuộc sau đây là gì?Maven phụ thuộc 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> 

Nếu tôi bao gồm spring-webmvc một mình sau đó spring-web đang ngầm nói thêm.

Khi nào chúng tôi nên sử dụng spring-web một mình?

Trả lời

90

spring-web cung cấp tích hợp HTTP cốt lõi, bao gồm một số bộ lọc Servlet tiện dụng, Trình chặn HTTP mùa xuân, cơ sở hạ tầng để tích hợp với các khuôn khổ web và công nghệ HTTP khác, ví dụ: Hessian, vải bố.

spring-webmvc là triển khai Spring MVC. spring-webmvcdepends on trên spring-web, do đó bao gồm nó sẽ quá thêm spring-web. Bạn không phải thêm spring-web một cách rõ ràng.

Bạn chỉ nên phụ thuộc vào spring-web nếu bạn không sử dụng Spring MVC nhưng muốn tận dụng các công nghệ liên quan đến web khác mà Spring hỗ trợ.

+3

Đồng ý, +1. Nhưng trường hợp hiếm hoi: Bao gồm 'spring-webmvc' inturn thêm' spring-web', nhưng nói nếu bạn có phiên bản spring-webmvc là 4.0.2 và bạn thêm một phụ thuộc khác cho biết phiên bản 'swagger-springmvc' là 0.8.8, sau đó nó thêm phiên bản 'spring-web' của 3.2.x. Trong trường hợp này, bạn có thể nhận được các ngoại lệ không tìm thấy lớp, Vì vậy, ở đây, bạn phải thêm 'spring-web' và phiên bản 4.0.2 một cách rõ ràng. Tôi gặp phải điều này ngày hôm nay – spiderman

+2

@spiderman Tôi sẽ loại trừ sự phụ thuộc 'mùa xuân-web' chuyển tiếp trong 'swagger-springmvc' – Roger