Sự phụ thuộc của Maven spring-web và spring-webmvc


100

Sự khác biệt giữa các phụ thuộc sau là gì?

<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-webmvcmột mình thì spring-webđược thêm vào một cách ngầm định.

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

Câu trả lời:


134

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, Spring HTTP Invoker, cơ sở hạ tầng để tích hợp với các khung công tác web và công nghệ HTTP khác, ví dụ như Hessian, Burlap.

spring-webmvclà một triển khai của Spring MVC. spring-webmvc phụ thuộc vào vào spring-web, do đó bao gồm nó sẽ transitively thêm spring-web. Bạn không cần phải thêm spring-webmột cách rõ ràng.

Bạn chỉ nên tin tưởng spring-webnế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ợ.


10
Đồng ý, +1. Nhưng trường hợp hiếm gặp: Bao gồm spring-webmvcthêm inturn spring-web, nhưng giả sử 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 giả sử swagger-springmvcphiên bản 0.8.8, thì nó sẽ thêm spring-webphiên bản 3.2.x. Trong trường hợp này, bạn có thể nhận được lớp không tìm thấy ngoại lệ, Vì vậy, ở đây, bạn phải thêm rõ ràng spring-webvà phiên bản là 4.0.2. Tôi đã gặp phải điều này hôm nay
spiderman

7
@spiderman Tôi sẽ loại trừ sự spring-webphụ thuộc bắc cầu trongswagger-springmvc
Roger

@ tomasz-nurkiewicz có gì khác biệt giữa spring-jms và mô-đun nhắn tin mùa xuân
legend

1
Khi bạn muốn xây dựng một ứng dụng sẽ là một api nghỉ ngơi và bạn sẽ không cần xem (jsp), bạn nên sử dụng cái gì? Spring-web hay spring-webmvc?
Mohammad Eghlima

1
@MohammadEghlima trong trường hợp này sử dụng spring-web
leeCoder

7

Từ tài liệu chính thức: Mô-đun spring-web cung cấp các tính năng tích hợp hướng web cơ bản như chức năng tải lên tệp nhiều phần và khởi tạo vùng chứa IoC bằng trình nghe Servlet và ngữ cảnh ứng dụng hướng web. Nó cũng chứa một ứng dụng khách HTTP và các phần liên quan đến web của hỗ trợ loại bỏ Spring.

Mô-đun spring-webmvc (còn được gọi là mô-đun Web-Servlet) chứa mô hình-view-controller (MVC) của Spring và triển khai Dịch vụ Web REST cho các ứng dụng web. Khung MVC của Spring cung cấp sự tách biệt rõ ràng giữa mã mô hình miền và biểu mẫu web và tích hợp với tất cả các tính năng khác của Spring Framework.

Mô-đun spring-webmvc-portlet (còn được gọi là mô-đun Web-Portlet) cung cấp triển khai MVC được sử dụng trong môi trường Portlet và phản ánh chức năng của mô-đun spring-webmvc dựa trên Servlet.

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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.