Różnica między Spring MVC a Spring Boot


234

Właśnie zacząłem uczyć się wiosny. W następnym kroku chciałbym opracować większe aplikacje internetowe.

Teraz zastanawiam się, czy powinienem zacząć od Spring Boot czy Spring MVC. Przeczytałem już kilka rzeczy, ale jest to mylące, ponieważ oba wyglądają podobnie.

Jakie są zatem różnice między nimi?

Odpowiedzi:


320
  • Spring MVC to kompletny framework MVC zorientowany na HTTP zarządzany przez Spring Framework i oparty na Servletach. Byłby to odpowiednik JSF w stosie JavaEE. Najpopularniejszymi elementami są klasy opatrzone adnotacjami @Controller, w których implementuje się metody, do których można uzyskać dostęp za pomocą różnych żądań HTTP. Ma odpowiednik @RestControllerdo implementacji interfejsów API opartych na REST.
  • Spring boot to narzędzie do szybkiego konfigurowania aplikacji, oferujące gotową konfigurację do tworzenia aplikacji opartych na Spring. Jak zapewne wiesz, Spring integruje pod swoim parasolem wiele różnych modułów , takich jak sprężyna-rdzeń , sprężyna-dane , sprężyna-sieć (przy okazji, w tym Spring MVC) i tak dalej. Za pomocą tego narzędzia możesz powiedzieć Springowi, z ilu z nich korzystać, a otrzymasz szybką konfigurację (później możesz to zmienić samodzielnie).

Tak więc Spring MVC jest strukturą do zastosowania w aplikacjach internetowych, a Spring Boot jest opartym na Spring inicjalizatorem projektu gotowym do produkcji . Przydatne może być odwiedzenie wiki tagu Spring MVC, a także wiki tagu Spring Boot w SO.


29
Tak _ + 1, Spring boot to tylko narzędzie do autokonfiguracji (spakowane jako framework). Spring mvc to framework internetowy
Plain_Dude_Sleeping_Alone

2
Czy to oznacza, że ​​Spring Boot służy do wyświetlania strony widoku (HTML) tylko dla powrotu kontrolera i wysłania JSON, a jeśli chcę użyć widoku do wyświetlenia HTML, muszę użyć Spring MVC?
Osama Al-Banna

2
@ OsamaAl-Banna Spring MVC to technologia warstwy widoku, która zasadniczo obsługuje odpowiedzi HTTP na żądanie, działając jako kontroler (w przypadku HTML można go połączyć z tymiankiem, na przykład w przypadku REST + JSON, należy go używać w obecnej postaci, ponieważ konwersja JSON odbywa się za pomocą zintegrowanego Jacksona). Spring Boot integruje całe projekty parasolowe Spring (MVC + Data + Core ...) i zapewnia szybką konfigurację gotową do ich użycia.
Xtreme Biker

3
Czy to oznacza, że ​​mogę skonfigurować moją aplikację internetową, aby Spring Bootnastępnie spełniała ona funkcję internetową Spring MVC?
Mike

1
@M pewnie, że tak
Xtreme Biker,

105

Spring MVC i Spring Boot są dobrze opisane w innych odpowiedziach, więc bez powtarzania tego, pozwól mi przejść od razu do szczegółów. Spring Boot i Spring MVC nie są porównywalne ani wzajemnie się wykluczają. Jeśli chcesz tworzyć aplikacje internetowe za pomocą Springa, i tak używałbyś Spring MVC . Twoje pytanie brzmi: czy użyć Spring Boot, czy nie.

Wydaje mi się, że do opracowywania popularnych aplikacji Spring lub rozpoczynania nauki Spring zalecamy użycie Spring Boot . Znacznie ułatwia pracę, jest gotowy do produkcji i szybko jest szeroko stosowany.

Czasami widziałem początkujących, którzy zadają to pytanie, ponieważ w STS (Spring Tool Suite) są dwa kreatory: jeden do tworzenia projektu Spring Boot, a drugi do tworzenia projektu Spring MVC. Tak więc, moim zaleceniem byłoby utworzenie projektu Spring Boot i wybranie Web jako modułu w tym.


1
Kiedy używasz wiosennego rozruchu (z wiosennym przechowywaniem danych i wiosennym przeglądaniem stron), masz tutaj zasadę MVC, prawda? Byłem po prostu zdezorientowany, ponieważ myślałem, że Spring MVC jest jedyną wersją Spring, która korzysta z modelu MVC.
watchme

5
spring-web to nic innego jak moduł spring-mvc
Sanjay


23

W uproszczeniu można to określić jako:

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

A Spring Boot to Framework opiniotwórczy, więc jego wersja uwzględnia szybki rozwój, mniej czasu potrzebnego na konfigurację i ma bardzo dobre wsparcie społeczności.


19

Spring MVCjest podprojektem Spring Framework, ukierunkowanym na projektowanie i rozwój aplikacji wykorzystujących wzorzec MVC (Model-View-Controller). Spring MVC został zaprojektowany w taki sposób, aby w pełni i całkowicie integrować się z Spring Framework i tranzytowo, większością innych podprojektów.

Spring Boot można zrozumieć całkiem dobrze z tego artykułu zespołu Spring Engineering. Jest rzekomo opiniotwórczy, tzn. Mocno opowiada się za pewnym stylem szybkiego rozwoju, ale jest wystarczająco dobrze zaprojektowany, aby uwzględnić wyjątki od reguły, jeśli chcesz. Krótko mówiąc, jest to konwencja dotycząca metodologii konfiguracji, która jest gotowa zrozumieć potrzebę złamania konwencji, gdy jest to uzasadnione.


17

Oto kilka głównych punktów, które odróżniają Spring, Spring MVC i Spring Boot:

Wiosna:

  1. Główną różnicą jest „zdolność testowa”.
  2. Wiosna przychodzi z DI i MKOl. Przez co cała ciężka praca wykonywana przez system nie musimy wykonywać żadnej pracy (np. Zwykle definiujemy obiekt klasy ręcznie, ale poprzez Di po prostu adnotujemy za pomocą @Service lub @Component - pasujące klasy zarządzają nimi).
  3. Za pomocą @Autowired adnotacji łatwo kpimy () w czasie testów jednostkowych.
  4. Kod powielania i hydrauliczny. W JDBC piszemy ten sam kod wiele razy, aby wykonać dowolną operację bazy danych. Wiosna rozwiązuje ten problem za pośrednictwem Hibernacji i ORM.
  5. Dobra integracja z innymi frameworkami. Jak Hibernacja, ORM, Junit i Mockito.

Wiosna MVC

  1. Szkielet Spring MVC to moduł sprężyny, który umożliwia tworzenie aplikacji internetowych zorientowanych na HTTP.
  2. Spring MVC ma wyraźne oddzielenie kodu w logice wejściowej (kontroler), logice biznesowej (model) i logice interfejsu użytkownika (widok).
  3. Wzorzec wiosenny MVC pomaga w tworzeniu elastycznych i luźno powiązanych aplikacji internetowych.
  4. Zapewnij różne zakodowane sposoby dostosowywania aplikacji w zależności od potrzeb.

Wiosenny rozruch:

  1. Utwórz Szybką aplikację, aby zamiast zarządzać pojedynczą dużą aplikacją internetową, dzielimy ją indywidualnie na różne Mikrousługi, które mają swój własny zakres i możliwości.
  2. Automatyczna konfiguracja za pomocą Web Jar: w normalnej wiośnie istnieje wiele konfiguracji, takich jak DispatcherServlet, Scan Component, View Resolver, Web Jar, XML. (Na przykład, jeśli chciałbym skonfigurować źródło danych, fabryka menedżera transakcji Entity Manager). Konfiguruj automatycznie, gdy nie jest dostępny przy użyciu ścieżki klasy.
  3. Pochodzi z domyślnymi Spring Starterami, które mają pewne domyślne zależności konfiguracyjne Spring (takie jak Spring Core, Web-MVC, Jackson, Tomcat, sprawdzanie poprawności, wiązanie danych, rejestrowanie). Nie martw się także o problem z wersją.

(Ewolucja taka jak: Spring -> Spring MVC -> Spring Boot, więc nowsze wersje mają kompatybilność ze starszymi funkcjami wersji.) Uwaga: Nie zawiera wszystkich punktów.


10

SpringBoot jest wstępnie skonfigurowany tak, aby zmniejszyć konfigurację kotła i zapewnia najłatwiejszy lub najszybszy sposób na uruchomienie aplikacji.

SpringBoot przejmuje kłopot z konfiguracją od dewelopera do siebie samego, a nie do Springa.

Domyślnie SpringBoot opiera się na koncepcji Spring Framework, takiej jak fasola, kontroler, usługi, jpa itp.

Można powiedzieć, że SpringBoot jest opakowaniem Springa.

W SpringBoot domyślnie port serwera to 8080, ale jeśli chcesz to zmienić, przejdź do pliku application.properties i napisz

server.port = 8084


10
  • Za pomocą wiosennego rozruchu nie będziesz musiał budować konfiguracji. Zostanie to zrobione automatycznie podczas tworzenia projektu.

  • Jeśli korzystasz ze sprężynowego MVC, musisz samodzielnie zbudować konfigurację. To jest bardziej skomplikowane, ale ma kluczowe znaczenie.


Proste i eleganckie wyjaśnienie
Sritam Jagadev

8

Nie powtarzając tego samego w poprzednich odpowiedziach,
piszę tę odpowiedź dla osób, które chcą rozpocząć nowy projekt i nie wiedzą, które ramy są najlepsze do uruchomienia projektu. Jeśli jesteś początkującym w tym frameworku, najlepszą rzeczą, którą wolę, jest użycie rozruchu wiosennego (z STS / Spring Tool Suite ). Ponieważ to bardzo pomaga. Wykonuje wszystkie konfiguracje samodzielnie. Dodatkowo użyj Hibernacji z systemem Spring-boot jako ramy bazy danych. Dzięki tej kombinacji Twoja aplikacja będzie najlepsza. Mogę to zagwarantować na podstawie moich doświadczeń.

Nawet to jest jedna z najlepszych platform dla JEE (obecnie), która umrze w najbliższej przyszłości. Nadchodzą lekkie alternatywy. Dlatego bądź na bieżąco ze swoimi doświadczeniami, nie trzymaj się jednej konkretnej struktury. Najlepszą rzeczą jest płynność w pojęciach, a nie w ramach.


5

Pomyśl w ten sposób:

Spring MVC to platforma internetowa do implementacji architektury MVC.

Spring Boot to narzędzie zorientowane na programistę. Programista musi skupić się na programowaniu, a narzędzie na konfiguracjach. Nie musimy więc marnować czasu na konfigurowanie kilku plików XML, aby stworzyć prosty „Hello world”.



1

Spring MVC i Spring Boot istnieją w innym celu. Nie jest więc rozsądne porównywanie się ze sobą jako konkurentów.

Co to jest Spring Boot?

Spring Boot to platforma do pakowania aplikacji wiosennej z rozsądnymi ustawieniami domyślnymi. Co to znaczy?. Tworzysz aplikację internetową przy użyciu Spring MVC, Spring Data, Hibernate i Tomcat. Jak spakować i wdrożyć tę aplikację na serwerze WWW. W tej chwili musimy ręcznie pisać konfiguracje, pliki XML itp. W celu wdrożenia na serwerze WWW.

Spring Boot robi to za Ciebie w konfiguracji Zero XML w twoim projekcie. Uwierz mi, nie potrzebujesz deskryptora wdrażania, serwera WWW itp. Spring Boot to magiczne środowisko, które łączy wszystkie zależności dla Ciebie. Wreszcie twoja aplikacja internetowa będzie samodzielnym plikiem JAR z osadzonymi serwerami.

Jeśli nadal jesteś zdezorientowany, jak to działa, przeczytaj o rozwoju frameworku mikrousług za pomocą Spring Boot.

Co to jest Spring MVC?

Jest to tradycyjny framework aplikacji internetowych, który pomaga budować aplikacje internetowe. Jest podobny do frameworku Struts.

Spring MVC to framework Java, który służy do tworzenia aplikacji internetowych. Jest zgodny z wzorcem projektowym Model-View-Controller. Implementuje wszystkie podstawowe funkcje szkieletu sprężyn rdzeniowych, takie jak Inversion of Control, Dependency Injection.

Spring MVC zapewnia eleganckie rozwiązanie do korzystania z MVC w środowisku wiosennym za pomocą DispatcherServlet. W tym przypadku DispatcherServlet to klasa, która odbiera przychodzące żądanie i odwzorowuje je na odpowiednie zasoby, takie jak kontrolery, modele i widoki.

Mam nadzieję, że to pomoże ci zrozumieć różnicę.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.