Spring MVC lub Spring Boot [zamknięte]

114

W przypadku dużego projektu firmowego (internetowego), czy zalecamy używanie Spring MVC czy Spring-Boot?

Spring-Boot pod względem konfiguracji jest bardzo łatwy w porównaniu do Spring MVC.

Zastanawiam się, czy użycie Spring-Boot może mieć te same zalety co Spring MVC?

Co polecasz?

Diego
źródło
29
Nie ma wyboru między MVC i Boot, ponieważ Boot może używać MVC (i automatycznie go konfigurować) . Jeśli masz na myśli „Rozruch czy bez rozruchu?” zależy to od tego, jak otwarta jest Twoja firma na innowacje (i związane z nimi ryzyko). Tak czy inaczej, proszenie o rekomendację jest tutaj nie na temat .
kryger
Dziękuję za odpowiedź. Zdałem sobie sprawę, że but sprężynowy można skonfigurować tak, aby sprężynował mvc. Ale jestem zdezorientowany, czy użyć Spring-Boot, czy Spring MVC, oba mają te same cechy (rozruch sprężynowy łatwy w konfiguracji). Z twojego doświadczenia podczas używania?
Diego
1
Uruchomienie wiosenne pozwala zaoszczędzić czas na konfigurowaniu aplikacji z domyślnymi komponentami bean i zarządzaniu zależnościami. Ale spring-boot i spring-mvc mają różne cele. Jeśli chcesz używać spring-boot z spring-mvc, możesz i nie musisz niczego konfigurować, chyba że chcesz zastąpić konfigurację niestandardową.
Eddú Meléndez
Dziękuję za odpowiedź. Do mojego przyszłego projektu użyję Spring -Boot. Myślę, że Spring -Boot jest łatwiejszy w konfiguracji i oszczędza dużo czasu.
Diego
2
I spring boot nie jest niekompatybilny z opakowaniem wojennym i zewnętrznym kontenerem serwletów, patrz 58.2 Pakowanie wykonywalnych plików jar i wojennych
Nicolas Labrot

Odpowiedzi:

106

Moja osobista rada to zdecydowanie używanie Spring Boot z wielu powodów.

  1. Po pierwsze, Boot to „przyszłość wiosny”. Oznacza to, że dzięki Boot możesz skorzystać z wielu zobowiązań społeczności Springa. Większość dzisiejszych projektów Spring jest całkowicie zintegrowana z Bootem, nawet społeczność zaczyna tworzyć wiele aplikacji opartych na Boot. Na przykład do zarządzania i monitorowania. Mogę zasugerować kontakt z administratorem Spring Boot

  2. Dzięki Spring Boot możesz skorzystać z bardzo ładnych i przydatnych funkcji, takich jak siłownik i zdalna powłoka do zarządzania i monitorowania, które ulepszają twoją aplikację dzięki gotowym do produkcji funkcjom, które są bardzo przydatne.

  3. Bardzo ładne i potężne właściwości i kontrolki konfiguracji - możesz skonfigurować swoją aplikację application.properties/yml i rozszerzyć bootowanie w bardzo prosty i imponujący sposób, nawet zarządzanie w zakresie zastępowania jest bardzo potężne.

  4. To jedna z pierwszych platform gotowych do obsługi mikroserwisów i moim zdaniem w dzisiejszych czasach jest najlepsza! Nawet jeśli nie zbudujesz projektu mikrousługi z bootowaniem, możesz skorzystać z nowoczesnego podejścia, w którym masz automatycznie spójny słoik, który może korzystać ze wszystkich funkcji, które opisałem powyżej, lub jeśli wolisz, możesz narzucić pakowanie jako klasyczna wojna i rozprowadź swoją wojnę w dowolnym pojemniku, który chcesz.

  5. Korzystanie z inteligentnego podejścia opartego na konwencjach nad konfiguracją, które znacznie skraca fazę uruchamiania i konfiguracji projektu. W rzeczywistości masz zestaw początkowych zależności Maven lub Gradle, które upraszczają zarządzanie zależnościami. Następnie, dzięki charakterystyce autokonfiguracji, możesz skorzystać z wielu standardowych konfiguracji, które są wprowadzane przez strukturę konfiguracji warunkowej w Spring 4. Możesz nadpisać ją swoimi specyficznymi konfiguracjami, definiując po prostu swój bean zgodnie z konwencją, którą możesz zobaczyć w automatycznie konfigurowany plik JAR zależności Boot. Pamiętaj, że Spring jest open-source i możesz zobaczyć kod. Również dokumentacja moim zdaniem jest dobra.

  6. Spring initializer to fajne narzędzie dostępne pod tym linkiem: https://start.spring.io/ to bardzo fajne narzędzie służące do tworzenia projektów w bardzo szybki sposób.


Mam nadzieję, że ta refleksja pomoże Ci zdecydować, jakie jest najlepsze rozwiązanie.

Valerio Vaudi
źródło
1
Dziękuję za Twoją odpowiedź. Mam tu trochę zamieszania. Chcę używać Spring 4 w moim projekcie, ponieważ nie będę musiał używać persistence.xmlpliku konfiguracyjnego i wielu innych funkcji. Czy mogę mieć cechy Spring 4 w wiosennym bucie? Jeśli tak, jak to zrobić
viper
2
Zgodziłbym się, jeśli planujesz robić rzeczy dość waniliowe. Ilość razy, którą próbowałem uruchomić, powoduje ból głowy i krzyczę na ekran, ponieważ boot stara się być zbyt sprytny, jeśli chodzi o zależności, które mam i kończy się na tym, że muszę zrobić więcej, aby je wyłączyć, niż bym je włączyć przy użyciu projektu bez rozruchu. Kilka rzeczy, które kończą się koszmarem, to próba pracy z LDAP, gdy potrzebna jest pamięć podręczna db, lub konfigurowanie więcej niż jednego źródła danych ma rozruch, próbując utworzyć JdbcTemplate i hibernować instancje bez mojej wiedzy, a nawet uruchamiając bazę danych h3 samodzielnie.
Brett Ryan
1
Konfiguracja właściwości jest również czymś, czego nie nauczyłem się kontrolować. W projektach bez rozruchu utworzyłbym klasę AppConfig, która ma przeciążoną obsługę odczytu właściwości w pliku właściwości aplikacji, której mogę używać w JSP i SpEL, ale nie mogę dowiedzieć się, jak zrobić to samo z bootowaniem.
Brett Ryan
1
Czy ta odpowiedź jest nadal aktualna (sześć miesięcy później). Przyglądam się temu i nadal nie rozumiem, dlaczego ludzie nadal mieliby używać Springa, skoro mają niesamowity Spring Boot? Chodzi mi o to, że bardzo lubię Spring Boot, pomysł inteligentnego oprogramowania, które konfiguruje się sam, jest dla mnie niesamowity, ale jestem bardzo zdezorientowany! znowu dlaczego ludzie mieliby nadal używać Spring, skoro mają niesamowity Spring Boot?
Ahmad Hajjar
1
@AhmadHajjar, do nowego projektu zdecydowanie wybrałbym Spring Boot. Obecnie jest to całkowicie dojrzałe narzędzie. Ale pamiętaj, że ludzie nadal muszą utrzymywać zwykłe projekty Spring, niektóre z nich mogą być proste, aby przejść do Boot, a inne prawdopodobnie są tak duże, że proces migracji byłby uciążliwy.
Xtreme Biker
39

Spring Boot wykorzystuje Spring MVC! Jest po prostu automatycznie skonfigurowany i gotowy do użycia po zaimportowaniu jar-boot-starter-web. Więc w zasadzie zastanawiałbyś się, czy użyć Spring Boot, czy ręcznie skonfigurować aplikację Spring ...

Ulises
źródło
4
Tak _ + 1, Spring boot to tylko narzędzie do autokonfiguracji, Spring mvc to platforma internetowa
Plain_Dude_Sleeping_Alone
@Plain_Dude_Sleeping_Alone Rozumiem, że Spring MVC to framework. Mówisz, że Spring Boot to tylko narzędzie do automatycznej konfiguracji, czy można je również uznać za Framework?
Jesse
@Jesse, cóż, oba można uznać za narzędzia lub frameworki. Ale to, co ludzie podkreślają tutaj, to fakt, że spring boot jest raczej narzędziem dla frameworka internetowego Spring MVC. Zapewni gotową konfigurację potrzebną do wiosennego mvc, chociaż sam łup jest w formie szkieletu. Wreszcie mój angielski jest tak kiepski, że może już spalić ci twarz. Hehe
Plain_Dude_Sleeping_Alone
24

Zdecydowanie możesz wybrać Spring Boot. Zaczęliśmy już używać Spring Boot do tworzenia aplikacji korporacyjnych. Ma wiele zalet, poniżej wymieniono kilka z nich:

  1. Konfiguracja Twojego projektu będzie dość prosta. Nie ma potrzeby utrzymywania pliku XML, wystarczy tylko wiedzieć, jak efektywnie można używać pliku application.properties .

  2. Daje wiele domyślnych implementacji, na przykład jeśli chcesz wysłać wiadomość e-mail, zapewnia domyślną implementację JavaMailSender

  3. Integracja Spring Hibernate i JPA będzie całkiem prosta.

Takich jest wiele, możesz eksplorować w zależności od swoich potrzeb.

Rakesh
źródło
Bardzo dziękuję za wyjaśnienie
Diego
Wiosna rozruchu jest zawsze korzystne, ponieważ nie mają do czynienia z gadatliwy XML i ich wykorzystanie mikro-usług architektur
JorgeTovar
10

Możesz używać Spring MVC z bootowaniem sprężynowym, jak powiedział @kryger, nie są one między nimi wyłączne, a konfiguracja będzie łatwiejsza, również polecam użycie http://www.thymeleaf.org/, który jest szablonem frameworkowym. Praca z tym jest jak praca z JSP, ale thymeleaf integruje się bezproblemowo z HTML, więc twój kod będzie wyglądał bardzo czysto i możesz dodać wiele przydatnych funkcji.

aruiz
źródło
8

Myślę, że Spring Boot jest bardziej przydatny niż MVC, ponieważ ma wiele zalet i wbudowanych funkcji, które czynią go bardziej niezawodnym niż MVC. W Spring Boot większość rzeczy jest automatycznie konfigurowana i nie ma potrzeby pisania tych XML, tak jak robimy to w MVC, co pozwala zaoszczędzić czas.

Spring Boot zawiera plik wojenny z czasem wykonywania serwera, takim jak Tomcat. Pozwala to na łatwą dystrybucję i wdrażanie aplikacji internetowych. Ponieważ branża zmierza w kierunku wdrożeń opartych na kontenerach, Spring Boot jest przydatny również w tym kontekście.

Spring MVC to framework aplikacji internetowych. Wiosną możesz zrobić wszystko bez Spring Boot, ale Spring Boot pomaga Ci szybciej wykonywać zadania.

Spring boot upraszcza zależności Springa, koniec z kolizjami wersji, może być uruchamiany bezpośrednio z wiersza poleceń bez kontenera aplikacji, buduj więcej przy mniejszej ilości kodu - bez XML, nawet web.xml, automatyczna konfiguracja, przydatne narzędzia do uruchamiania w produkcji, inicjalizacja bazy danych, pliki konfiguracyjne specyficzne dla środowiska, zbieranie metryk.

Podstawy Spring Boot można znaleźć tutaj

Sanket
źródło
Dziękuję za Twoją odpowiedź. To było bardzo pomocne w zrozumieniu butów wiosennych. Jedna rzecz, w której jestem zdezorientowana, to to, że jeśli będę musiał zmienić wersję sprężyny, której używam, jak mam to zrobić z butem sprężynowym? Nigdzie nie widzę, gdzie jest zdefiniowana wersja sprężynowa.
viper
Nie korzystałeś z mavena w swoim projekcie? @viper
erginduran
tak, użyłem Maven. ale używając rozruchu sprężynowego, nie widzę tam zależności sprężyn.
viper