Spring MVC ve Spring Boot arasındaki fark


234

İlkbahar öğrenmeye yeni başladım. Bir sonraki adımımda, daha büyük web uygulamaları geliştirmek istiyorum.

Şimdi Spring Boot veya Spring MVC ile başlamam gerekip gerekmediğini merak ediyorum. Zaten bazı şeyler okudum, ama kafa karıştırıcı çünkü her ikisi de benzer görünüyor.

Peki ikisi arasındaki farklar nelerdir?

Yanıtlar:


320
  • Spring MVC , Spring Framework tarafından yönetilen ve Servlets merkezli eksiksiz bir HTTP odaklı MVC çerçevesidir. JavaEE yığınındaki JSF'ye eşdeğerdir. İçindeki en popüler öğeler, @Controllerfarklı HTTP istekleri kullanarak erişebileceğiniz yöntemleri uyguladığınız ek açıklamalarla eklenmiş sınıflardır . @RestControllerREST tabanlı API'leri uygulamaya eşdeğerdir .
  • Spring boot , uygulamaları hızlı bir şekilde kurmak için bir araçtır, Spring destekli uygulamalar oluşturmak için kutudan çıkarılmış bir konfigürasyon sunar. Bildiğiniz gibi, Spring , yay çekirdeği , bahar verileri , bahar ağı (bu arada Spring MVC'yi içerir) ve benzeri gibi şemsiyesi altında çok çeşitli modülleri entegre eder . Bu araçla Spring'e kaç tanesini kullanacağını söyleyebilir ve onlar için hızlı bir kurulum elde edersiniz (daha sonra kendiniz değiştirmenize izin verilir).

Bu nedenle, Spring MVC web uygulamalarında kullanılacak bir çerçevedir ve Spring Boot, Spring tabanlı üretime hazır bir proje başlatıcıdır. Spring MVC etiketi wiki'yi ve SO'daki Spring Boot etiketi wiki'sini ziyaret etmek yararlı olabilir .


29
Evet + 1, Yay önyükleme sadece bir otomatik yapılandırma aracıdır (çerçeve olarak paketlenmiştir). Bahar mvc web çerçevesidir
Plain_Dude_Sleeping_Alone

2
Bu, Spring Boot'un görünüm (HTML) sayfasını yalnızca bir denetleyici dönüşü ve JSON sonrası için görüntülemek için kullanıldığı anlamına mı geliyor ve görünümü HTML'yi görüntülemek için kullanmak istiyorsam Spring MVC kullanmam gerekir mi?
Osama Al-Banna

2
@ OsamaAl-Banna Spring MVC bir görünüm katmanı teknolojisidir, temel olarak bir denetleyici olarak işlev gören HTTP istek yanıtlarını işler (HTML için, kekik ile birleştirebilirsiniz, örneğin, REST + JSON için, olduğu gibi kullanın, çünkü JSON dönüşümü entegre Jackson ile yapılır). Spring Boot, tüm Spring şemsiye projelerini (MVC + Data + Core ...) entegre eder ve bunları kullanmak için hızlı üretime hazır bir yapılandırma sağlar.
Xtreme Biker

3
Bu, web uygulamamı yapılandırabileceğim Spring Bootve web işlevselliğini yerine getirebileceğim anlamına mı geliyor Spring MVC?
Mike

1
@Mike emin olun
Xtreme Biker

105

Spring MVC ve Spring Boot diğer cevaplarda iyi açıklanmıştır ve bu yüzden tekrar etmeden, doğrudan özelliklere atlamama izin verin. Spring Boot ve Spring MVC karşılaştırılamaz veya birbirini dışlamaz. Spring kullanarak web uygulaması geliştirme yapmak istiyorsanız, yine de Spring MVC kullanırsınız . Ardından sorunuz Spring Boot'un kullanılıp kullanılmayacağı haline gelir .

Yaylı Yay uygulamaları geliştirmek veya Bahar öğrenmeye başlamak için Bahar Önyüklemesinin kullanılması tavsiye edilir. İşi önemli ölçüde kolaylaştırır, üretime hazırdır ve hızla yaygın bir şekilde benimsenmektedir.

Yeni başlayanların bazen bu soruyu sorduğunu gördüm çünkü STS'de (Spring Tool Suite) iki sihirbaz var: biri Spring Boot projesi oluşturmak için, diğeri Spring MVC projesi oluşturmak için. Bu yüzden tavsiyem, bir Spring Boot projesi oluşturmak ve içinde modül olarak Web'i seçmek .


1
Spring-boot kullandığınızda (spring-data-rest ve spring-web ile) burada MVC prensibiniz var, değil mi? Sadece kafam karıştı çünkü Spring MVC'nin MVC Modelini kullanan tek Spring versiyonu olduğunu düşündüm.
watchme

5
spring-web, spring-mvc modülünden başka bir şey değildir
Sanjay


23

Basit bir ifadeyle şu şekilde ifade edilebilir:

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

Ve Spring Boot Görüşlü bir çerçevedir, bu nedenle hızlı geliştirme, yapılandırma için daha az zaman ihtiyacı ve çok iyi bir toplum desteğine sahip olması düşünülür.


19

Spring MVCMVC (Model-View-Controller) modelini kullanan uygulamaların tasarımını ve geliştirilmesini hedefleyen Spring Framework'ün bir alt projesidir. Spring MVC, Spring Framework ve geçişli olarak diğer birçok alt projeyle tamamen ve tamamen entegre olacak şekilde tasarlanmıştır.

Spring BootBahar Mühendisliği ekibi tarafından bu makaleden oldukça iyi anlaşılabilir . Sözde olduğu düşünülmektedir, yani belirli bir hızlı gelişim tarzını ağır bir şekilde savunmaktadır, ancak eğer kurala istisnalar içerecek kadar iyi tasarlanmıştır. Kısacası, gerektiğinde sözleşmeyi kırma ihtiyacınızı anlamaya istekli olan yapılandırma metodolojisi üzerine bir sözleşmedir.


17

İşte Spring, Spring MVC ve Spring Boot'u farklılaştıran bazı ana noktalar:

Bahar:

  1. Temel Fark "Test yeteneği" dir.
  2. Bahar DI ve IOC ile gelir. Sistem tarafından yapılan tüm sıkı çalışmalarla herhangi bir tür iş yapmamız gerekmiyor (normalde sınıf nesnesini manuel olarak tanımlıyoruz, ancak Di aracılığıyla sadece @Service veya @Component ile eşleşen notlar ekliyoruz).
  3. @Autowired ek açıklaması ile birim test zamanında kolayca alay ederiz ().
  4. Çoğaltma ve Sıhhi Tesisat kodu. JDBC'de, her türlü veritabanı işlemini gerçekleştirmek için aynı kodu birden çok kez yazıyoruz. Bahar, Hazırda Bekletme ve ORM aracılığıyla bu sorunu çözer.
  5. Diğer çerçevelerle iyi entegrasyon. Hibernate, ORM, Junit & Mockito gibi.

Bahar MVC

  1. Spring MVC çerçevesi, tesis HTTP odaklı web uygulaması geliştirme sağlayan bahar modülüdür.
  2. Spring MVC, giriş mantığı (denetleyici), iş mantığı (model) ve UI mantığı (görünüm) üzerinde net kod ayrımına sahiptir.
  3. Spring MVC kalıbı, esnek ve gevşek bağlı web uygulamalarının geliştirilmesine yardımcı olur.
  4. İhtiyaçlarınıza göre uygulamanızı özelleştirmek için çeşitli sabit kodlanmış yollar sağlayın.

Bahar çizme:

  1. Hızlı Uygulama oluşturma, tek bir büyük web uygulamasını yönetmek yerine bunları kendi kapsam ve yeteneklerine sahip farklı Mikro Hizmetlere böleriz.
  2. Web Jar kullanarak Otomatik Yapılandırma: Normal Baharda DispatcherServlet, Bileşen Tarama, Çözümleyici Görüntüle, Web Kavanoz, XML gibi birçok yapılandırma vardır. (Örneğin, veri kaynağını yapılandırmak istersem, Entity Manager İşlem Yöneticisi Fabrikası). Sınıf yolu kullanılarak kullanılamadığında otomatik olarak yapılandırın.
  3. Bazı varsayılan Yay yapılandırma bağımlılığı ile gelen Varsayılan Yay Başlatıcıları ile birlikte gelir (Spring Core, Web-MVC, Jackson, Tomcat, Doğrulama, Veri Bağlama, Günlüğe Kaydetme gibi). Sürüm oluşturma konusunda da endişelenmeyin.

(Evrim gibi: Bahar -> Bahar MVC -> Bahar Önyükleme, Yani daha yeni sürüm eski sürüm özellikleri uyumluluğuna sahiptir.) Not: Tüm noktaları içermez.


10

SpringBoot, kazan yapılandırmasını azaltan ve uygulamanızı başlatmanın en kolay veya hızlı yolunu sağlayan önceden yapılandırılmıştır.

SpringBoot, konfigürasyonun baş ağrısını geliştiriciden Spring yerine kendi kendine alır.

Örtülü olarak SpringBoot, fasulye, kontrolör, hizmetler, jpa vb.Gibi Bahar çerçeve konseptine dayanmaktadır.

SpringBoot'un bir Spring sarıcısı olduğunu söyleyebilirsiniz.

SpringBoot'ta varsayılan olarak Server portu 8080'dir, ancak değiştirmek isterseniz application.properties adresine gidin ve yazın

server.port = 8084


10
  • Yaylı önyükleme kullanarak konfigürasyon oluşturmanıza gerek yoktur. Proje oluşturduğunuzda bu otomatik olarak yapılacaktır.

  • Spring MVC kullanıyorsanız, konfigürasyonu kendiniz oluşturmanız gerekir. Daha karmaşık, ama çok önemli.


Basit ve zarif açıklama
Sritam Jagadev

8

Önceki cevaplarda aynı şeyi tekrarlamadan,
yeni bir projeye başlamak isteyen ve projenizi başlatmak için en iyi çerçevenin hangisi olduğunu bilmeyen insanlar için bu cevabı yazıyorum. Bu çerçeveye yeni başlıyorsanız, tercih ettiğim en iyi şey Spring boot kullan (STS / Spring Tool Suite ile ). Çünkü çok yardımcı oluyor. Tüm konfigürasyonları kendi başına yapar. Ayrıca, veritabanı çerçevesi olarak Hazırda Beklet'i yay önyüklemeli kullanın . Bu kombinasyon ile uygulamanız en iyisi olacaktır. Bunu deneyimlerimle garanti edebilirim.

Bu bile JEE için en iyi çerçevelerden biri (şu anda) bu yakın gelecekte ölecek. Yaklaşan hafif alternatifler var. Bu nedenle, deneyiminizle güncel tutun, belirli bir çerçeveye bağlı kalmayın. En iyi şey, çerçevelerde değil, kavramlarda akıcı olmaktır.


5

Şu şekilde düşünün:

Bahar MVC , MVC mimarisini uygulamak için web tabanlı bir çerçevedir.

Spring Boot , programcıya yönelik bir araçtır. Programcı programlama üzerine odaklanmalı ve araç konfigürasyonlara odaklanmalıdır. Bu yüzden basit bir 'Merhaba dünya' yapmak için bir grup xml'yi yapılandırmak için zamanımızı harcamamız gerekmez.


2

Aşağıda Spring boot ve Spring MVC arasındaki farklar bulunmaktadır.

resim açıklamasını buraya girin


1

Spring MVC ve Spring Boot farklı amaçlarla mevcuttur. Yani birbirlerini yarışmacı olarak karşılaştırmak akıllıca değil.

Spring Boot nedir?

Spring Boot, yay uygulamasını makul varsayılan değerlerle paketlemek için bir çerçevedir. Ne anlama geliyor?. Spring MVC, Spring Data, Hibernate ve Tomcat kullanarak bir web uygulaması geliştiriyorsunuz. Bu uygulamayı web sunucunuza nasıl paketleyip dağıtırsınız? Şu andan itibaren, web sunucusuna dağıtım için konfigürasyonları, XML dosyalarını vb. Manuel olarak yazmamız gerekiyor.

Spring Boot bunu sizin projenizde Sıfır XML yapılandırmasıyla yapar. İnanın bana dağıtım tanımlayıcısı, web sunucusu, vb. Gerekmez. Spring Boot sizin için tüm bağımlılıkları bir araya getiren büyülü bir çerçevedir. Son olarak, web uygulamanız gömülü sunucuları olan bağımsız bir JAR dosyası olacaktır.

Bunun nasıl çalıştığından hala kafanız karıştıysa, lütfen yay önyüklemesini kullanarak mikro hizmet çerçevesi geliştirme hakkında bilgi edinin.

Spring MVC nedir?

Web uygulamaları oluşturmanıza yardımcı olan geleneksel bir web uygulama çerçevesidir. Struts çerçevesine benzer.

Bir Spring MVC, web uygulamaları oluşturmak için kullanılan bir Java çerçevesidir. Model-View-Controller tasarım modelini takip eder. Konversiyon Kontrol, Bağımlılık Enjeksiyonu gibi çekirdek yay çerçevesinin tüm temel özelliklerini uygular.

Bir Spring MVC, DispatcherServlet'in yardımıyla MVC'yi bahar çerçevesinde kullanmak için zarif bir çözüm sunar. Burada, DispatcherServlet gelen isteği alan ve denetleyiciler, modeller ve görünümler gibi doğru kaynağa eşleyen bir sınıftır.

Umarım bu farkı anlamanıza yardımcı olur.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.