Spring MVC atau Spring Boot [ditutup]

114

Untuk proyek perusahaan (web) besar, apakah Anda merekomendasikan penggunaan Spring MVC atau Spring-Boot?

Spring-Boot, dari segi konfigurasi, sangat mudah dibandingkan Spring MVC.

Saya bertanya-tanya apakah saya menggunakan Spring-Boot dapat memiliki keunggulan yang sama dari Spring MVC?

Apa yang kamu sarankan?

Diego
sumber
29
Pilihannya bukan antara MVC dan Boot karena Boot dapat menggunakan MVC (dan mengkonfigurasi secara otomatis) . Jika yang Anda maksud adalah "Boot atau Tanpa Boot?" maka itu tergantung pada seberapa terbuka terhadap inovasi (dan risiko terkait) perusahaan Anda. Either way, meminta rekomendasi adalah off-topik di sini.
kryger
Terima kasih atas tanggapan Anda. Saya menyadari bahwa spring boot dapat dikonfigurasi ke spring mvc. Tapi saya bingung apakah akan menggunakan Spring-Boot atau Spring MVC keduanya memiliki karakteristik yang sama (Spring boot mudah diatur). Dari pengalaman Anda saat Anda menggunakan?
Diego
1
Boot musim semi menghemat waktu Anda untuk mengkonfigurasi aplikasi yang memiliki kacang default dan mengelola dependensi juga. Tapi, spring-boot dan spring-mvc memiliki tujuan yang berbeda. Jika Anda ingin menggunakan spring-boot dengan spring-mvc Anda bisa dan tidak perlu menyiapkan apa pun kecuali Anda ingin mengganti konfigurasi kustom.
Eddú Meléndez
Terima kasih atas tanggapan Anda. Untuk proyek masa depan saya akan menggunakan Spring -Boot. Saya pikir Spring -Boot lebih mudah dikonfigurasi dan menghemat banyak waktu.
Diego
2
Dan sepatu bot musim semi tidak kompatibel dengan kemasan perang dan wadah servlet eksternal, lihat 58,2 Kemasan jar yang dapat dieksekusi dan file perang
Nicolas Labrot

Jawaban:

106

Saran pribadi saya pasti menggunakan Spring Boot karena berbagai alasan.

  1. Yang pertama adalah bahwa Boot adalah "masa depan Musim Semi". Artinya, dengan Boot Anda bisa mendapatkan keuntungan dari banyak komitmen komunitas Spring. Sebagian besar proyek Musim Semi saat ini sepenuhnya terintegrasi dengan Boot, bahkan komunitas mulai mengembangkan banyak aplikasi berdasarkan Boot. Misalnya untuk mengelola dan memantau. Saya dapat menyarankan untuk melihat Admin Spring Boot

  2. Dengan Spring Boot Anda bisa mendapatkan keuntungan dari fitur yang sangat bagus dan berguna seperti aktuator dan shell jarak jauh untuk mengelola dan memantau, yang meningkatkan aplikasi Anda dengan fitur siap produksi yang sangat berguna.

  3. Properti dan kontrol konfigurasi yang sangat bagus dan kuat - Anda dapat mengonfigurasi aplikasi Anda dengan application.properties/yml dan memperpanjang boot dengan cara yang sangat sederhana dan mengesankan, bahkan manajemen dalam hal menimpanya pun sangat andal.

  4. Ini adalah salah satu platform siap layanan mikro pertama, dan menurut saya saat ini adalah yang terbaik! Bahkan jika Anda tidak membangun proyek layanan mikro dengan boot, Anda dapat memanfaatkan pendekatan modern di mana Anda memiliki tabung yang konsisten otomatis yang dapat memanfaatkan semua fitur yang saya jelaskan di atas atau jika Anda lebih suka, Anda dapat menerapkan kemasan sebagai perang klasik dan menyebarkan perang Anda di salah satu wadah yang Anda inginkan.

  5. Penggunaan pendekatan cerdas dan konvensi atas konfigurasi yang mengurangi fase mulai dan konfigurasi proyek Anda secara signifikan. Sebenarnya Anda memiliki sekumpulan dependensi Maven atau Gradle pemula yang menyederhanakan manajemen dependensi. Kemudian dengan karakteristik konfigurasi otomatis Anda bisa mendapatkan keuntungan dari banyak konfigurasi standar, yang diperkenalkan melalui kerangka kerja Konfigurasi Bersyarat di Spring 4. Anda dapat menggantinya dengan konfigurasi spesifik Anda hanya dengan mendefinisikan kacang Anda sesuai dengan konvensi yang dapat Anda lihat di konfigurasi otomatis JAR dari ketergantungan Boot. Ingatlah bahwa Spring adalah open-source dan Anda dapat melihat kodenya. Juga dokumentasinya menurut saya bagus.

  6. Penginisialisasi musim semi adalah alat keren yang dapat diperoleh di tautan ini: https://start.spring.io/ adalah alat yang sangat keren hanya untuk membuat proyek Anda dengan cara yang sangat cepat.


Saya berharap refleksi ini dapat membantu Anda memutuskan apa solusi terbaik.

Valerio Vaudi
sumber
1
Terima kasih atas jawabannya. Saya sedikit bingung di sini. Saya ingin menggunakan Spring 4 dalam proyek saya karena saya tidak perlu menggunakan persistence.xmlfile konfigurasi dan banyak fitur lainnya. Bisakah saya memiliki fitur spring 4 di spring boot? Jika ya, bagaimana melakukan itu
viper
2
Saya akan cenderung setuju jika Anda berencana melakukan hal-hal yang cantik. Berapa kali saya mencoba untuk boot menyebabkan sakit kepala dan saya berteriak di layar karena boot mencoba menjadi terlalu pintar tentang ketergantungan apa yang saya miliki dan akhirnya harus melakukan lebih banyak untuk mematikan sesuatu daripada saya akan menyalakannya menggunakan proyek tanpa boot. Beberapa hal yang akhirnya menjadi mimpi buruk adalah mencoba bekerja dengan LDAP di mana cache db diperlukan, atau mengonfigurasi lebih dari satu DataSource telah boot mencoba membuat JdbcTemplate dan contoh hibernasi tanpa sepengetahuan saya, dan bahkan memulai database h3 dengan sendirinya.
Brett Ryan
1
Konfigurasi properti juga merupakan sesuatu yang belum saya ketahui cara mengontrolnya. Dalam proyek tanpa boot, saya akan membuat kelas AppConfig yang kelebihan beban dukungan untuk membaca properti di file properti aplikasi saya yang dapat saya gunakan di JSP dan SpEL tetapi tidak tahu cara melakukan hal yang sama dengan boot.
Brett Ryan
1
Apakah jawaban ini masih valid (enam bulan kemudian) Saya sedang menyelidiki ini, dan saya masih tidak mengerti mengapa orang masih menggunakan Spring, padahal mereka memiliki Spring Boot yang luar biasa? Maksud saya, saya sangat menyukai Spring Boot, ide tentang perangkat lunak cerdas yang mengkonfigurasi dirinya sendiri sangat mengagumkan bagi saya, tetapi saya sangat bingung! sekali lagi mengapa orang masih menggunakan Spring, ketika mereka memiliki Spring Boot yang mengagumkan?
Ahmad Hajjar
1
@AhmadHajjar, untuk proyek baru saya pasti akan menggunakan Spring Boot. Saat ini itu adalah alat yang sepenuhnya matang. Namun perlu diingat bahwa orang masih perlu mempertahankan project Spring biasa, beberapa di antaranya mungkin langsung beralih ke Boot dan yang lainnya mungkin sangat besar sehingga akan membuat proses migrasi menjadi sulit.
Xtreme Biker
39

Spring Boot menggunakan Spring MVC! Ini hanya dikonfigurasi otomatis dan siap digunakan ketika Anda mengimpor jar web spring-boot-starter-web. Jadi pada dasarnya Anda berbicara tentang apakah akan menggunakan Spring Boot atau mengatur Aplikasi Spring Anda secara manual ...

Ulises
sumber
4
Ya _ + 1, Spring boot hanyalah alat konfigurasi otomatis, Spring mvc adalah kerangka web
Plain_Dude_Sleeping_Alone
@ Plain_Dude_Sleeping_Alone Saya mengerti bahwa Spring MVC adalah kerangka kerja. Anda mengatakan Spring Boot hanyalah alat autoconfig, dapatkah itu juga dianggap sebagai Framework?
Jesse
@Jesse, keduanya bisa dianggap sebagai alat atau kerangka kerja. Tapi apa yang orang tekankan di sini adalah bahwa boot musim semi lebih merupakan alat untuk kerangka kerja web MVC Spring. Ini akan menyediakan konfigurasi siap pakai yang diperlukan untuk mvc Spring, meskipun, booty itu sendiri dalam bentuk kerangka kerja. Akhirnya, bahasa Inggris saya sangat buruk sehingga mungkin sudah membakar wajah Anda. Hehe
Plain_Dude_Sleeping_Alone
24

Anda pasti bisa memilih Spring Boot. Kami sudah mulai menggunakan Spring Boot untuk membangun aplikasi perusahaan. Ini memiliki banyak keuntungan, daftar beberapa di bawah ini:

  1. Konfigurasi proyek Anda akan sangat sederhana. Tidak perlu memelihara file XML, yang perlu Anda ketahui adalah seberapa efisien Anda dapat menggunakan file application.properties .

  2. Memberikan banyak implementasi default, misalnya jika Anda perlu mengirim email, itu menyediakan implementasi default JavaMailSender

  3. Integrasi Spring Hibernate dan JPA akan sangat sederhana.

Seperti ini ada banyak yang bisa Anda jelajahi berdasarkan kebutuhan Anda.

Rakesh
sumber
Terima kasih banyak atas penjelasan Anda
Diego
Spring boot selalu disukai karena Anda tidak harus berurusan dengan XML verbose dan mereka memanfaatkan arsitektur layanan mikro
JorgeTovar
10

Anda dapat menggunakan Spring MVC dengan spring boot seperti yang dikatakan @kryger, mereka tidak eksklusif di antara mereka, dan konfigurasi akan lebih mudah, saya juga merekomendasikan Anda untuk menggunakan http://www.thymeleaf.org/ yang merupakan kerangka kerja template. Bekerja dengan itu seperti bekerja dengan JSP tetapi thymeleaf terintegrasi mulus dengan HTML, sehingga kode Anda akan terlihat sangat bersih dan Anda dapat menambahkan banyak fitur yang berguna.

aruiz
sumber
8

Menurut saya, Spring Boot lebih berguna daripada MVC, karena memiliki banyak keunggulan dan fitur bawaan yang membuatnya lebih andal daripada MVC. Di Spring Boot sebagian besar hal telah dikonfigurasi secara otomatis dan tidak perlu menulis xml tersebut seperti yang kita lakukan di MVC, yang dapat menghemat waktu.

Spring Boot menggabungkan file perang dengan server run-time seperti Tomcat. Hal ini memungkinkan distribusi dan penerapan aplikasi web yang mudah. Saat industri bergerak menuju penerapan berbasis kontainer, Spring Boot juga berguna dalam konteks ini.

Spring MVC adalah kerangka aplikasi web. Meskipun Anda dapat melakukan semuanya di Musim Semi tanpa Spring Boot, tetapi Spring Boot membantu Anda menyelesaikan berbagai hal dengan lebih cepat.

Spring boot menyederhanakan dependensi Spring Anda, tidak ada lagi benturan versi, dapat dijalankan langsung dari baris perintah tanpa wadah aplikasi, membangun lebih banyak dengan lebih sedikit kode - tidak perlu XML, bahkan web.xml, konfigurasi otomatis, alat yang berguna untuk menjalankan dalam produksi, inisialisasi database, file konfigurasi khusus lingkungan, metrik pengumpulan.

Dasar-dasar Spring Boot dapat ditemukan di sini

Sanket
sumber
Terima kasih atas jawabannya. Itu sangat membantu untuk memahami tentang sepatu bot musim semi. Satu hal yang membuat saya bingung adalah, jika saya harus mengganti versi pegas yang saya gunakan, bagaimana saya melakukannya dengan pegas boot? Saya tidak dapat melihat di mana pun di mana versi pegas didefinisikan.
viper
Tidak menggunakan maven dalam proyek Anda? @viper
erginduran
ya saya telah menggunakan maven. tetapi menggunakan boot pegas, saya tidak dapat melihat dependensi pegas di sana.
viper