Ketergantungan Maven spring-web vs spring-webmvc

100

Apa perbedaan antara dependensi berikut?

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

Jika saya memasukkan spring-webmvcsendiri maka spring-websecara implisit ditambahkan.

Kapan sebaiknya kita gunakan spring-websendiri?

Mahendran
sumber

Jawaban:

134

spring-web menyediakan integrasi HTTP inti, termasuk beberapa filter Servlet yang berguna, Spring HTTP Invoker, infrastruktur untuk diintegrasikan dengan kerangka kerja web lain dan teknologi HTTP misalnya Hessian, Burlap.

spring-webmvcmerupakan implementasi Spring MVC. spring-webmvc tergantung pada pada spring-web, sehingga termasuk hal transitif akan menambah spring-web. Anda tidak perlu menambahkan spring-websecara eksplisit.

Anda harus bergantung hanya spring-webjika Anda tidak menggunakan Spring MVC tetapi ingin memanfaatkan teknologi terkait web lainnya yang didukung Spring.

Tomasz Nurkiewicz
sumber
10
Setuju, +1. Tetapi skenario kasus yang jarang terjadi: Termasuk spring-webmvcpenambahan inturn spring-web, tetapi katakan jika Anda memiliki versi spring-webmvc sebagai 4.0.2, dan Anda menambahkan ketergantungan lain katakanlah swagger-springmvcversi 0.8.8, maka itu menambahkan spring-webversi 3.2.x. Dalam hal ini Anda mungkin mendapatkan pengecualian kelas tidak ditemukan, Jadi di sini, Anda harus secara eksplisit menambahkan spring-webdan versi 4.0.2. Saya menemukan ini hari ini
spiderman
7
@ spiderman Saya akan mengecualikan spring-webketergantungan transitif diswagger-springmvc
Roger
@ tomasz-nurkiewicz apa perbedaan antara modul spring-jms dan spring-messaging
legenda
1
Ketika Anda ingin membangun aplikasi yang akan menjadi api istirahat dan Anda tidak memerlukan view (jsp) sama sekali, apa yang harus Anda gunakan? spring-web atau spring-webmvc?
Mohammad Eghlima
1
@MohammadEghlima dalam hal ini menggunakan spring-web
leeCoder
7

Dari dokumen resmi: Modul web pegas menyediakan fitur integrasi berorientasi web dasar seperti fungsionalitas unggahan file multibagian dan inisialisasi wadah IoC menggunakan pendengar Servlet dan konteks aplikasi berorientasi web. Ini juga berisi klien HTTP dan bagian terkait web dari dukungan jarak jauh Spring.

Modul spring-webmvc (juga dikenal sebagai modul Web-Servlet) berisi model-view-controller (MVC) Spring dan implementasi REST Web Services untuk aplikasi web. Kerangka MVC Spring menyediakan pemisahan yang bersih antara kode model domain dan formulir web dan terintegrasi dengan semua fitur lain dari Kerangka Spring.

Modul pegas-webmvc-portlet (juga dikenal sebagai modul Web-Portlet) menyediakan implementasi MVC untuk digunakan dalam lingkungan Portlet dan mencerminkan fungsionalitas modul pegas-webmvc berbasis Servlet.

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

LiLi
sumber