Perbedaan antara Spring MVC dan Spring Boot

234

Saya baru saja mulai belajar Spring. Pada langkah saya berikutnya, saya ingin mengembangkan aplikasi web yang lebih besar.

Sekarang saya bertanya-tanya apakah saya harus mulai dengan Spring Boot atau Spring MVC. Saya sudah membaca beberapa hal, tetapi membingungkan karena keduanya terlihat serupa.

Jadi apa perbedaan antara keduanya?

Gero
sumber

Jawaban:

320
  • Spring MVC adalah kerangka kerja MVC berorientasi HTTP lengkap yang dikelola oleh Spring Framework dan berbasis di Servlets. Itu akan setara dengan JSF di tumpukan JavaEE. Elemen-elemen yang paling populer di dalamnya adalah kelas-kelas yang dijelaskan dengan @Controller, di mana Anda menerapkan metode yang dapat Anda akses menggunakan permintaan HTTP yang berbeda. Ini setara @RestControllerdengan mengimplementasikan API berbasis REST.
  • Spring boot adalah utilitas untuk mengatur aplikasi dengan cepat, menawarkan konfigurasi out-of-box untuk membangun aplikasi yang didukung Spring. Seperti yang Anda ketahui, Spring mengintegrasikan berbagai modul yang berbeda di bawah payungnya , sebagai pegas-inti , pegas-data , pegas-web (yang termasuk Spring MVC, omong-omong) dan sebagainya. Dengan alat ini, Anda dapat memberi tahu Spring berapa banyak dari mereka yang akan digunakan dan Anda akan mendapatkan pengaturan cepat untuk mereka (Anda diizinkan untuk mengubahnya sendiri nanti).

Jadi, Spring MVC adalah kerangka kerja untuk digunakan dalam aplikasi web dan Spring Boot adalah inisialisasi proyek siap produksi berbasis Spring . Anda mungkin menemukan berguna mengunjungi wiki tag Spring MVC serta wiki tag Spring Boot di SO.

Biker Xtreme
sumber
29
Yap _ +1, Boot musim semi hanyalah alat konfigurasi otomatis (dikemas sebagai kerangka kerja). Spring mvc adalah kerangka kerja web
Plain_Dude_Sleeping_Alone
2
Apakah itu berarti Spring Boot digunakan untuk menampilkan halaman tampilan (HTML) hanya untuk pengontrol kembali dan memposting JSON, dan jika saya ingin menggunakan tampilan untuk menampilkan HTML saya harus menggunakan Spring MVC?
Osama Al-Banna
2
@ OsamaAl-Banna Spring MVC adalah teknologi layer view, yang pada dasarnya menangani HTTP request-response, bertindak sebagai pengontrol (untuk HTML, Anda bisa menggabungkannya dengan thymeleaf, misalnya, untuk REST + JSON, gunakan apa adanya, karena konversi JSON dilakukan dengan Jackson yang terintegrasi). Spring Boot mengintegrasikan seluruh proyek payung Spring (MVC + Data + Core ...) dan menyediakan konfigurasi siap produksi cepat untuk menggunakannya.
Xtreme Biker
3
Apakah ini berarti saya dapat mengkonfigurasi aplikasi web saya dengan Spring Bootkemudian memenuhi fungsionalitas web dengan Spring MVC?
Mike
1
@ Mike yakin tidak
Xtreme Biker
105

Spring MVC dan Spring Boot dijelaskan dengan baik dalam jawaban lain, dan tanpa mengulanginya, izinkan saya melompat langsung ke spesifik. Spring Boot dan Spring MVC tidak dapat dibandingkan atau saling eksklusif. Jika Anda ingin melakukan pengembangan aplikasi web menggunakan Spring, Anda tetap akan menggunakan Spring MVC . Pertanyaan Anda kemudian menjadi apakah akan menggunakan Spring Boot atau tidak.

Untuk mengembangkan aplikasi Spring yang umum atau mulai mempelajari Spring, saya pikir menggunakan Spring Boot akan direkomendasikan. Ini sangat memudahkan pekerjaan, siap produksi dan cepat diadopsi secara luas.

Saya terkadang melihat pemula mengajukan pertanyaan ini karena di STS (Spring Tool Suite) ada dua penyihir: satu untuk membuat proyek Spring Boot, dan satu lagi untuk membuat proyek Spring MVC. Jadi, rekomendasi saya adalah membuat proyek Boot Musim Semi dan memilih Web sebagai modul di dalamnya.

Sanjay
sumber
1
Saat Anda menggunakan spring-boot (dengan spring-data-rest dan spring-web), Anda memiliki prinsip MVC di sini, bukan? Saya hanya bingung karena saya pikir Spring MVC adalah satu-satunya versi Spring yang menggunakan MVC-Model.
watchme
5
spring-web tidak lain adalah modul spring-mvc
Sanjay
23

Secara sederhana dapat dinyatakan sebagai:

Spring boot = Spring MVC + Auto Configuration(Don't need to write spring.xml file for configurations) + Server(You can have embedded Tomcat, Netty, Jetty server).

Dan Spring Boot adalah kerangka kerja yang Opinionated, sehingga pengembangannya mempertimbangkan pengembangan cepat, lebih sedikit waktu untuk konfigurasi dan memiliki dukungan komunitas yang sangat baik.

Bishal Jaiswal
sumber
19

Spring MVCadalah sub proyek dari Kerangka Kerja Musim Semi, yang menargetkan desain dan pengembangan aplikasi yang menggunakan pola MVC (Model-View-Controller). Spring MVC dirancang untuk berintegrasi sepenuhnya dan sepenuhnya dengan Spring Framework dan secara transitif, sebagian besar sub-proyek lainnya.

Spring Bootdapat dipahami dengan baik dari artikel ini oleh tim Spring Engineering. Itu seharusnya dianggap, yaitu sangat menganjurkan gaya perkembangan cepat tertentu, tetapi dirancang cukup baik untuk mengakomodasi pengecualian terhadap aturan, jika Anda mau. Singkatnya, ini adalah konvensi tentang metodologi konfigurasi yang bersedia memahami kebutuhan Anda untuk melanggar konvensi ketika diperlukan.

Pengguna Web
sumber
17

Inilah beberapa poin utama yang membedakan Spring, Spring MVC dan Spring Boot:

Musim semi:

  1. Perbedaan utama adalah "Tes-kemampuan".
  2. Musim semi datang dengan DI dan IOC. Melalui semua kerja keras yang dilakukan oleh sistem, kita tidak perlu melakukan pekerjaan apa pun (seperti, biasanya kita mendefinisikan objek kelas secara manual, tetapi melalui Di, kita hanya membuat catatan dengan @Service atau @Component - kelas yang cocok mengaturnya).
  3. Melalui anotasi @Autowired, kami dengan mudah mengejek () pada waktu pengujian unit.
  4. Duplikasi dan kode Plumbing. Dalam JDBC kami menulis kode yang sama beberapa kali untuk melakukan segala jenis operasi database Spring mengatasi masalah itu melalui Hibernate dan ORM.
  5. Integrasi yang baik dengan kerangka kerja lain. Seperti Hibernate, ORM, Junit & Mockito.

Spring MVC

  1. Kerangka Spring MVC adalah modul pegas yang menyediakan fasilitas pengembangan aplikasi web berorientasi HTTP.
  2. Spring MVC memiliki pemisahan kode yang jelas pada logika input (pengontrol), logika bisnis (model), dan logika UI (tampilan).
  3. Pola Spring MVC membantu mengembangkan aplikasi web yang fleksibel dan longgar.
  4. Berikan berbagai cara kode untuk menyesuaikan aplikasi Anda berdasarkan kebutuhan Anda.

Boot Musim Semi:

  1. Buat Aplikasi Cepat sehingga, alih-alih mengelola aplikasi web besar tunggal, kami membaginya secara individual ke dalam Layanan Mikro yang berbeda yang memiliki ruang lingkup & kemampuan sendiri.
  2. Konfigurasi Otomatis menggunakan Jar Web: Pada musim semi normal terdapat banyak konfigurasi seperti DispatcherServlet, Pemindaian Komponen, Pemecah Masalah, Jar Web, XML. (Misalnya jika saya ingin mengonfigurasi sumber data, Manajer Manajer Transaksi Entitas Manajer). Konfigurasikan secara otomatis ketika itu tidak tersedia menggunakan jalur kelas.
  3. Hadir dengan Default Spring Starters, yang disertai dengan beberapa dependensi konfigurasi Spring default (seperti Spring Core, Web-MVC, Jackson, Tomcat, Validasi, Penjilidan Data, Logging). Jangan khawatir tentang masalah versi juga.

(Evolusi seperti: Spring -> Spring MVC -> Spring Boot, Jadi versi yang lebih baru memiliki kompatibilitas fitur versi lama.) Catatan: Tidak mengandung semua poin.

Dhwanil Patel
sumber
10

SpringBoot sebenarnya sudah dikonfigurasi sebelumnya yang mengurangi konfigurasi boiler dan menyediakan cara termudah atau cepat untuk memulai aplikasi Anda.

SpringBoot mengambil sakit kepala konfigurasi dari pengembang untuk dirinya sendiri daripada Spring.

Secara implisit SpringBoot didasarkan pada konsep kerangka kerja Spring seperti kacang, pengontrol, layanan, jpa dll.

Anda dapat mengatakan bahwa SpringBoot adalah pembungkus Spring.

Di SpringBoot oleh port default Server adalah 8080 tetapi jika Anda ingin mengubah kemudian pergi ke application.properties Anda dan tulis

server.port = 8084

Yasir Shabbir Choudhary
sumber
10
  • Menggunakan spring boot Anda tidak perlu membangun konfigurasi. Ini akan dilakukan secara otomatis ketika Anda membuat proyek.

  • Jika Anda menggunakan pegas MVC, Anda perlu membuat konfigurasi sendiri. Ini lebih rumit, tetapi sangat penting.

Leanghak
sumber
Klarifikasi sederhana dan elegan
Sritam Jagadev
8

Tanpa mengulangi hal yang sama dalam jawaban sebelumnya,
saya menulis jawaban ini untuk orang-orang yang ingin memulai proyek baru dan tidak tahu mana kerangka kerja terbaik untuk memulai proyek Anda. Jika Anda seorang pemula untuk kerangka kerja ini hal terbaik yang saya sukai adalah Gunakan spring boot (dengan STS / Spring Tool Suite ). Karena itu banyak membantu. Ini melakukan semua konfigurasi sendiri. Selain itu, gunakan Hibernate dengan spring-boot sebagai kerangka kerja basis data. Dengan kombinasi ini, aplikasi Anda akan menjadi yang terbaik. Saya bisa menjamin itu dengan pengalaman saya.

Bahkan ini adalah salah satu kerangka kerja terbaik untuk JEE (saat ini) ini akan mati dalam waktu dekat. Ada alternatif ringan yang muncul. Jadi terus perbarui dengan pengalaman Anda jangan menempel satu kerangka kerja tertentu. Yang terbaik adalah fasih dalam konsep, bukan dalam kerangka kerja.

Indrajith Ekanayake
sumber
5

Pikirkan seperti ini:

Spring MVC adalah kerangka kerja berbasis web untuk mengimplementasikan arsitektur MVC.

Spring Boot adalah alat yang berorientasi pada programmer. Programmer harus fokus pada pemrograman dan alat harus fokus pada konfigurasi. Jadi kita tidak perlu membuang waktu untuk mengonfigurasi sekelompok xml untuk membuat 'Hello world' yang sederhana.

Armando Microsse
sumber
2

Di bawah ini adalah perbedaan antara boot Spring dan Spring MVC.

masukkan deskripsi gambar di sini

Anil Nivargi
sumber
1

Spring MVC dan Spring Boot ada untuk tujuan yang berbeda. Jadi, tidak bijaksana membandingkan satu sama lain sebagai pesaing.

Apa itu Spring Boot?

Spring Boot adalah kerangka kerja untuk mengemas aplikasi pegas dengan default yang masuk akal. Apa artinya ini?. Anda sedang mengembangkan aplikasi web menggunakan Spring MVC, Spring Data, Hibernate dan Tomcat. Bagaimana Anda mengemas dan menyebarkan aplikasi ini ke server web Anda. Sampai sekarang, kita harus menulis konfigurasi, file XML, dll secara manual untuk digunakan ke server web.

Spring Boot melakukan itu untuk Anda dengan konfigurasi Zero XML di proyek Anda. Percayalah, Anda tidak perlu deskriptor penggunaan, server web, dll. Spring Boot adalah kerangka kerja magis yang menggabungkan semua dependensi untuk Anda. Akhirnya aplikasi web Anda akan menjadi file JAR mandiri dengan server yang diembed.

Jika Anda masih bingung bagaimana cara kerjanya, silakan baca tentang pengembangan kerangka kerja microservice menggunakan spring boot.

Apa itu Spring MVC?

Ini adalah kerangka kerja aplikasi web tradisional yang membantu Anda membangun aplikasi web. Ini mirip dengan kerangka kerja Struts.

Spring MVC adalah framework Java yang digunakan untuk membangun aplikasi web. Ini mengikuti pola desain Model-View-Controller. Ini mengimplementasikan semua fitur dasar kerangka pegas inti seperti Pembalikan Kontrol, Injeksi Ketergantungan.

MVC Musim Semi memberikan solusi yang elegan untuk menggunakan MVC dalam kerangka kerja pegas dengan bantuan DispatcherServlet. Di sini, DispatcherServlet adalah kelas yang menerima permintaan masuk dan memetakannya ke sumber daya yang tepat seperti pengontrol, model, dan tampilan.

Saya harap ini membantu Anda memahami perbedaannya.

Manas Ranjan Mahapatra
sumber