Unterschied zwischen Spring MVC und Spring Boot


234

Ich habe gerade angefangen, den Frühling zu lernen. In meinem nächsten Schritt möchte ich größere Webanwendungen entwickeln.

Jetzt frage ich mich, ob ich mit Spring Boot oder Spring MVC beginnen soll. Ich habe bereits einige Sachen gelesen, aber es ist verwirrend, weil beide ähnlich aussehen.

Was sind die Unterschiede zwischen den beiden?

Antworten:


320
  • Spring MVC ist ein vollständiges HTTP-orientiertes MVC-Framework, das vom Spring Framework verwaltet wird und auf Servlets basiert. Dies entspricht JSF im JavaEE-Stack. Die beliebtesten Elemente sind mit Anmerkungen versehene Klassen @Controller, in denen Sie Methoden implementieren, auf die Sie mit verschiedenen HTTP-Anforderungen zugreifen können. Es entspricht @RestControllerder Implementierung von REST-basierten APIs.
  • Spring Boot ist ein Dienstprogramm zum schnellen Einrichten von Anwendungen und bietet eine sofort einsatzbereite Konfiguration zum Erstellen von Spring-basierten Anwendungen. Wie Sie vielleicht wissen, integriert Spring eine Vielzahl verschiedener Module unter seinem Dach , z. B. Federkern , Federdaten , Federbahn (einschließlich Spring MVC) und so weiter. Mit diesem Tool können Sie Spring mitteilen, wie viele von ihnen verwendet werden sollen, und Sie erhalten ein schnelles Setup für sie (Sie können es später selbst ändern).

Spring MVC ist also ein Framework für Webanwendungen und Spring Boot ist ein Spring-basierter produktionsbereiter Projektinitialisierer. Möglicherweise ist es hilfreich, das Spring MVC-Tag-Wiki sowie das Spring Boot-Tag-Wiki in SO zu besuchen .


29
Ja _ + 1, Spring Boot ist nur ein Autokonfigurationstool (als Framework verpackt). Spring MVC ist Web-Framework
Plain_Dude_Sleeping_Alone

2
Bedeutet das, dass Spring Boot verwendet wird, um die Ansichtsseite (HTML) nur für eine Controller-Rückgabe und Post-JSON anzuzeigen. Wenn ich die Ansicht zum Anzeigen von HTML verwenden möchte, muss ich Spring MVC verwenden?
Osama Al-Banna

2
@ OsamaAl-Banna Spring MVC ist eine View-Layer-Technologie, die im Grunde genommen HTTP-Anforderungsantworten verarbeitet und als Controller fungiert (für HTML können Sie sie mit Thymeleaf kombinieren, z. B. für REST + JSON, verwenden Sie sie so, wie sie ist, weil Die JSON-Konvertierung erfolgt mit dem integrierten Jackson. Spring Boot integriert die gesamten Spring-Dachprojekte (MVC + Data + Core ...) und bietet eine produktionsbereite Konfiguration für deren Verwendung.
Xtreme Biker

3
Bedeutet dies, dass ich meine Web-App mit konfigurieren und Spring Bootdann die Webfunktionalität mit erfüllen kann Spring MVC?
Mike

1
@ Mike sicher, dass es tut
Xtreme Biker

105

Spring MVC und Spring Boot sind in anderen Antworten gut beschrieben. Lassen Sie mich daher, ohne dies zu wiederholen, direkt zu den Einzelheiten springen. Frühlingsstiefel und Spring MVC sind nicht vergleichbar oder schließen sich gegenseitig aus. Wenn Sie die Entwicklung von Webanwendungen mit Spring durchführen möchten, würden Sie Spring MVC trotzdem verwenden. Ihre Frage wird dann, ob Sie Spring Boot verwenden sollen oder nicht.

Für die Entwicklung gängiger Spring-Anwendungen oder den Beginn des Lernens von Spring wird die Verwendung von Spring Boot empfohlen. Es erleichtert die Arbeit erheblich, ist produktionsbereit und wird schnell weit verbreitet.

Ich habe manchmal Anfänger gesehen, die diese Frage gestellt haben, weil es in STS (Spring Tool Suite) zwei Assistenten gibt: einen zum Erstellen eines Spring Boot-Projekts und einen zum Erstellen eines Spring MVC-Projekts. Meine Empfehlung wäre also, ein Spring Boot-Projekt zu erstellen und darin Web als Modul zu wählen .


1
Wenn Sie Spring-Boot (mit Spring-Data-Rest und Spring-Web) verwenden, haben Sie hier das MVC-Prinzip, oder? Ich war nur verwirrt, weil ich dachte, Spring MVC sei die einzige Spring-Version, die das MVC-Modell verwendet.
Watchme

5
spring-web ist nichts anderes als das spring-mvc-modul
Sanjay


23

In einfachen Worten kann es angegeben werden als:

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

Und Spring Boot ist ein Opinionated-Framework, dessen Build eine schnelle Entwicklung berücksichtigt, weniger Zeit für die Konfiguration benötigt und eine sehr gute Community-Unterstützung bietet.


19

Spring MVCist ein Teilprojekt des Spring Framework, das auf das Design und die Entwicklung von Anwendungen abzielt, die das MVC-Muster (Model-View-Controller) verwenden. Spring MVC ist so konzipiert, dass es sich vollständig und vollständig in das Spring Framework und die meisten anderen Teilprojekte integriert.

Spring Bootkann aus diesem Artikel vom Spring Engineering-Team recht gut verstanden werden . Es wird angeblich mit einer Meinung versehen, dh es befürwortet stark einen bestimmten Stil der schnellen Entwicklung, aber es ist gut genug konzipiert, um Ausnahmen von der Regel zu berücksichtigen, wenn Sie so wollen. Kurz gesagt, es handelt sich um eine Konvention über die Konfigurationsmethode, die bereit ist, Ihre Notwendigkeit zu verstehen, die Konvention zu brechen, wenn dies gerechtfertigt ist.


17

Hier sind einige Hauptpunkte, die Spring, Spring MVC und Spring Boot unterscheiden:

Frühling :

  1. Hauptunterschied ist "Testfähigkeit".
  2. Der Frühling kommt mit DI und IOC. Durch all die harte Arbeit, die das System leistet, müssen wir keinerlei Arbeit leisten (normalerweise definieren wir das Objekt der Klasse manuell, aber durch Di kommentieren wir nur mit @Service oder @Component - passende Klassen verwalten diese).
  3. Durch die @ Autowired-Annotation können wir sie zum Zeitpunkt des Unit-Tests leicht verspotten ().
  4. Duplizierungs- und Installationscode. In JDBC schreiben wir denselben Code mehrmals, um jede Art von Datenbankoperation auszuführen. Spring löst dieses Problem über Hibernate und ORM.
  5. Gute Integration mit anderen Frameworks. Wie Hibernate, ORM, Junit & Mockito.

Feder MVC

  1. Das Spring MVC Framework ist ein Modul von Spring, das die Entwicklung von HTTP-orientierten Webanwendungen ermöglicht.
  2. Spring MVC verfügt über eine klare Codetrennung in Eingangslogik (Controller), Geschäftslogik (Modell) und UI-Logik (Ansicht).
  3. Spring MVC-Muster helfen bei der Entwicklung flexibler und lose gekoppelter Webanwendungen.
  4. Bieten Sie verschiedene fest codierte Möglichkeiten an, um Ihre Anwendung an Ihre Bedürfnisse anzupassen.

Spring Boot:

  1. Erstellen Sie eine Schnellanwendung, damit wir einzelne einzelne Webanwendungen nicht einzeln verwalten, sondern einzeln in verschiedene Microservices unterteilen, die ihren eigenen Umfang und ihre eigenen Funktionen haben.
  2. Automatische Konfiguration mit Web Jar: Im normalen Frühjahr gibt es viele Konfigurationen wie DispatcherServlet, Komponentenscan, View Resolver, Web Jar, XMLs. (Wenn ich beispielsweise die Datenquelle konfigurieren möchte, Entity Manager Transaction Manager Factory). Konfigurieren Sie automatisch, wenn es nicht über den Klassenpfad verfügbar ist.
  3. Kommt mit Standard-Spring-Startern, die mit einigen Standard-Spring-Konfigurationsabhängigkeiten ausgestattet sind (wie Spring Core, Web-MVC, Jackson, Tomcat, Validierung, Datenbindung, Protokollierung). Sorgen Sie sich auch nicht um Versionsprobleme.

(Evolution wie: Spring -> Spring MVC -> Spring Boot, neuere Versionen sind also mit den Funktionen der alten Version kompatibel.) Hinweis: Es enthält nicht alle Punkte.


10

SpringBoot ist tatsächlich vorkonfiguriert, um die Kesselkonfiguration zu reduzieren und die einfachste oder schnellste Möglichkeit zum Starten Ihrer Anwendung zu bieten.

SpringBoot nimmt die Kopfschmerzen der Konfiguration vom Entwickler auf sich selbst und nicht auf Spring.

Implizit basiert SpringBoot auf dem Spring-Framework-Konzept wie Bean, Controller, Services, JPA usw.

Man kann sagen, dass SpringBoot ein Wrapper von Spring ist.

In SpringBoot ist der Port des Servers standardmäßig 8080. Wenn Sie jedoch Änderungen vornehmen möchten, gehen Sie zu application.properties und schreiben Sie

server.port = 8084


10
  • Mit Spring Boot müssen Sie keine Konfiguration erstellen. Dies erfolgt automatisch, wenn Sie ein Projekt erstellen.

  • Wenn Sie Spring MVC verwenden, müssen Sie die Konfiguration selbst erstellen. Es ist komplizierter, aber entscheidend.


Einfache und elegante Klarstellung
Sritam Jagadev

8

Ohne dasselbe in früheren Antworten zu wiederholen,
schreibe ich diese Antwort für die Leute, die ein neues Projekt starten möchten und nicht wissen, welches der beste Rahmen ist, um Ihr Projekt zu starten. Wenn Sie ein Anfänger in diesem Framework sind, ist das Beste, was ich bevorzuge, Spring Boot (mit STS / Spring Tool Suite ) zu verwenden. Weil es sehr hilft. Es macht alle Konfigurationen für sich. Verwenden Sie außerdem den Ruhezustand mit Spring-Boot als Datenbankframework. Mit dieser Kombination ist Ihre Anwendung die beste. Das kann ich mit meinen Erfahrungen garantieren.

Auch dies ist eines der besten Frameworks für JEE (derzeit), das in naher Zukunft sterben wird. Es gibt leichte Alternativen. Halten Sie sich also über Ihre Erfahrungen auf dem Laufenden und halten Sie sich nicht an ein bestimmtes Framework. Das Beste ist, Konzepte fließend zu beherrschen, nicht die Frameworks.


5

Denken Sie so:

Feder MVC ist ein webbasiertes Framework zur Implementierung der MVC-Architektur.

Spring Boot ist ein Tool, das sich an den Programmierer richtet. Der Programmierer muss sich auf die Programmierung konzentrieren und das Tool muss sich auf die Konfigurationen konzentrieren. Wir müssen also nicht unsere Zeit damit verschwenden, eine Menge XML zu konfigurieren, um eine einfache "Hallo Welt" zu erstellen.


2

Im Folgenden sind die Unterschiede zwischen Spring Boot und Spring MVC aufgeführt.

Geben Sie hier die Bildbeschreibung ein


1

Spring MVC und Spring Boot sind für den unterschiedlichen Zweck vorhanden. Es ist also nicht ratsam, sich als Konkurrenten zu vergleichen.

Was ist Spring Boot?

Spring Boot ist ein Framework zum Verpacken der Federanwendung mit sinnvollen Standardeinstellungen. Was bedeutet das?. Sie entwickeln eine Webanwendung mit Spring MVC, Spring Data, Hibernate und Tomcat. Wie packen Sie diese Anwendung und stellen sie auf Ihrem Webserver bereit? Ab sofort müssen wir die Konfigurationen, XML-Dateien usw. für die Bereitstellung auf dem Webserver manuell schreiben.

Spring Boot erledigt dies für Sie mit der Zero XML-Konfiguration in Ihrem Projekt. Glauben Sie mir, Sie benötigen keinen Bereitstellungsdeskriptor, keinen Webserver usw. Spring Boot ist ein magisches Framework, das alle Abhängigkeiten für Sie bündelt. Schließlich ist Ihre Webanwendung eine eigenständige JAR-Datei mit eingebetteten Servern.

Wenn Sie immer noch verwirrt sind, wie dies funktioniert, lesen Sie bitte die Entwicklung von Microservice Frameworks mit Spring Boot.

Was ist Spring MVC?

Es ist ein traditionelles Webanwendungsframework, mit dem Sie Webanwendungen erstellen können. Es ähnelt dem Struts-Framework.

Eine Spring MVC ist ein Java-Framework, mit dem Webanwendungen erstellt werden. Es folgt dem Entwurfsmuster Model-View-Controller. Es implementiert alle grundlegenden Funktionen eines Kernfedergerüsts wie Inversion of Control und Dependency Injection.

Eine Spring MVC bietet eine elegante Lösung für die Verwendung von MVC im Spring Framework mithilfe von DispatcherServlet. Hier ist DispatcherServlet eine Klasse, die die eingehende Anforderung empfängt und sie der richtigen Ressource wie Controllern, Modellen und Ansichten zuordnet.

Ich hoffe, das hilft Ihnen, den Unterschied zu verstehen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.