Différence entre Spring MVC et Spring Boot


234

Je viens de commencer à apprendre le printemps. Dans ma prochaine étape, je voudrais développer de plus grandes applications Web.

Maintenant, je me demande si je devrais commencer avec Spring Boot ou Spring MVC. J'ai déjà lu quelques trucs, mais c'est déroutant car les deux se ressemblent.

Alors, quelles sont les différences entre les deux?

Réponses:


320
  • Spring MVC est un framework MVC complet orienté HTTP géré par Spring Framework et basé sur des servlets. Il serait équivalent à JSF dans la pile JavaEE. Les éléments les plus populaires sont les classes annotées @Controller, où vous implémentez des méthodes auxquelles vous pouvez accéder à l'aide de différentes requêtes HTTP. Il a un équivalent @RestControllerpour implémenter des API basées sur REST.
  • Spring Boot est un utilitaire permettant de configurer rapidement des applications, offrant une configuration prête à l'emploi afin de créer des applications basées sur Spring. Comme vous le savez peut-être, Spring intègre une large gamme de modules différents sous son égide , comme Spring-Core , Spring-Data , Spring-Web (qui comprend Spring MVC, soit dit en passant) et ainsi de suite. Avec cet outil, vous pouvez dire à Spring combien d'entre eux utiliser et vous obtiendrez une configuration rapide pour eux (vous êtes autorisé à le modifier par vous-même plus tard).

Ainsi, Spring MVC est un cadre à utiliser dans les applications Web et Spring Boot est un initialiseur de projet prêt pour la production basé sur Spring . Vous trouverez peut-être utile de visiter le wiki des balises Spring MVC ainsi que le wiki des balises Spring Boot dans SO.


29
Oui _ + 1, Spring boot n'est qu'un outil de configuration automatique (fourni en tant que framework). Spring mvc est un framework web
Plain_Dude_Sleeping_Alone

2
Cela signifie-t-il que Spring Boot est utilisé pour afficher la page de vue (HTML) uniquement pour un retour de contrôleur et pour publier JSON, et si je veux utiliser la vue pour afficher du HTML, je dois utiliser Spring MVC?
Osama Al-Banna

2
@ OsamaAl-Banna Spring MVC est une technologie de couche de vue, elle gère essentiellement les réponses aux requêtes HTTP, agissant comme un contrôleur (pour HTML, vous pouvez la combiner avec thymeleaf, par exemple, pour REST + JSON, utilisez-la telle quelle, car la conversion JSON se fait avec le Jackson intégré). Spring Boot intègre tous les projets parapluie Spring (MVC + Data + Core ...) et fournit une configuration prête pour la production rapide pour les utiliser.
Xtreme Biker

3
Cela signifie-t-il que je peux configurer mon application Web avec Spring Bootpuis remplir la fonctionnalité Web avec Spring MVC?
Mike

1
@Mike bien sûr
Xtreme Biker

105

Spring MVC et Spring Boot sont bien décrits dans d'autres réponses, et donc sans répéter cela, permettez-moi de passer directement aux détails. Spring Boot et Spring MVC ne sont pas comparables ni s'excluent mutuellement. Si vous souhaitez faire du développement d'applications Web à l'aide de Spring, vous utiliserez quand même Spring MVC . Votre question devient alors d'utiliser ou non Spring Boot .

Pour développer des applications Spring courantes ou commencer à apprendre Spring, je pense que l'utilisation de Spring Boot serait recommandée. Il facilite considérablement le travail, est prêt pour la production et est rapidement largement adopté.

J'ai parfois vu des débutants poser cette question car dans STS (Spring Tool Suite) il y a deux assistants: un pour créer un projet Spring Boot et un autre pour créer un projet Spring MVC. Donc, ma recommandation serait de créer un projet Spring Boot et de choisir Web comme module.


1
Lorsque vous utilisez Spring-Boot (avec Spring-Data-Rest et Spring-Web), vous avez le principe MVC ici, non? J'étais juste confus parce que je pensais que Spring MVC est la seule version Spring qui utilise le modèle MVC.
watchme

5
spring-web n'est rien d'autre que le module spring-mvc
Sanjay


23

En termes simples, il peut être déclaré comme suit:

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

Et Spring Boot est un framework Opinionated, donc sa construction prenant en considération un développement rapide, moins de temps pour la configuration et un très bon support communautaire.


19

Spring MVCest un sous-projet du Spring Framework, ciblant la conception et le développement d'applications utilisant le modèle MVC (Model-View-Controller). Spring MVC est conçu pour s'intégrer pleinement et complètement avec Spring Framework et de manière transitoire, la plupart des autres sous-projets.

Spring Bootpeut être très bien compris de cet article par l'équipe de Spring Engineering. Il est censé être d'opinion, c'est-à-dire qu'il préconise fortement un certain style de développement rapide, mais il est suffisamment bien conçu pour permettre des exceptions à la règle, si vous voulez. En bref, c'est une convention sur la méthodologie de configuration qui est prête à comprendre votre besoin de briser la convention lorsque cela est justifié.


17

Voici quelques points principaux qui différencient Spring, Spring MVC et Spring Boot:

Printemps :

  1. La principale différence est la "capacité de test".
  2. Le printemps arrive avec le DI et le CIO. Grâce à laquelle tout le travail acharné effectué par le système, nous n'avons pas besoin de faire tout type de travail (comme, normalement, nous définissons l'objet de classe manuellement, mais via Di, nous annotons simplement avec @Service ou @Component - la classe correspondante gère ceux-ci).
  3. Grâce à l'annotation @Autowired, nous pouvons facilement la simuler () au moment du test unitaire.
  4. Duplication et code de plomberie. Dans JDBC, nous écrivons le même code plusieurs fois pour effectuer tout type d'opération de base de données Spring résout ce problème via Hibernate et ORM.
  5. Bonne intégration avec d'autres cadres. Comme Hibernate, ORM, Junit & Mockito.

Spring MVC

  1. Le framework Spring MVC est un module de spring qui fournit le développement d'applications Web orientées HTTP.
  2. Spring MVC a une séparation claire du code sur la logique d'entrée (contrôleur), la logique métier (modèle) et la logique d'interface utilisateur (vue).
  3. Le modèle Spring MVC aide à développer des applications Web flexibles et faiblement couplées.
  4. Fournissez divers moyens codés en dur pour personnaliser votre application en fonction de vos besoins.

Spring Boot:

  1. Création d'une application rapide afin qu'au lieu de gérer une seule grande application Web, nous les divisions individuellement en différents microservices qui ont leur propre portée et capacité.
  2. Configuration automatique à l'aide de Web Jar: Dans Spring normal, il y a beaucoup de configurations comme DispatcherServlet, Component Scan, View Resolver, Web Jar, XMLs. (Par exemple, si je souhaite configurer la source de données, Entity Manager Transaction Manager Factory). Configurez automatiquement lorsqu'il n'est pas disponible à l'aide du chemin d'accès aux classes.
  3. Livré avec des démarreurs Spring par défaut, qui sont livrés avec une certaine dépendance de configuration Spring par défaut (comme Spring Core, Web-MVC, Jackson, Tomcat, Validation, Data Binding, Logging). Ne vous inquiétez pas non plus du problème de version.

(Evolution comme: Spring -> Spring MVC -> Spring Boot, donc les versions plus récentes ont la compatibilité des fonctionnalités de l'ancienne version.) Remarque: Il ne contient pas tous les points.


10

SpringBoot est en fait pré-configuré pour réduire la configuration de la chaudière et fournir le moyen le plus simple ou rapide de démarrer votre application.

SpringBoot prend le mal de tête de la configuration du développeur à lui-même plutôt qu'à Spring.

Implicitement SpringBoot est basé sur le concept de framework Spring comme bean, contrôleur, services, jpa etc.

Vous pouvez dire que SpringBoot est un wrapper de Spring.

Dans SpringBoot, le port par défaut du serveur est 8080, mais si vous souhaitez le modifier, accédez à votre application.properties et écrivez

server.port = 8084


10
  • En utilisant Spring Boot, vous n'aurez pas besoin de créer de configuration. Cela se fera automatiquement lorsque vous créez un projet.

  • Si vous utilisez Spring MVC, vous devez créer vous-même la configuration. C'est plus compliqué, mais c'est crucial.


Clarification simple et élégante
Sritam Jagadev

8

Sans répéter la même chose dans les réponses précédentes,
j'écris cette réponse pour les personnes qui cherchent à démarrer un nouveau projet et ne savent pas quel est le meilleur cadre pour démarrer votre projet. Si vous êtes un débutant dans ce cadre, la meilleure chose que je préfère est d'utiliser Spring Boot (avec STS / Spring Tool Suite ). Parce que ça aide beaucoup. Il fait toutes les configurations de son propre chef. De plus, utilisez Hibernate avec spring-boot comme infrastructure de base de données. Avec cette combinaison, votre application sera la meilleure. Je peux garantir cela avec mes expériences.

Même c'est l'un des meilleurs frameworks pour JEE (actuellement), cela va mourir dans un proche avenir. Il existe des alternatives légères à venir. Alors, restez à jour avec votre expérience, ne vous en tenez pas à un cadre particulier. La meilleure chose est de parler couramment les concepts, pas les cadres.


5

Pensez de cette façon:

Spring MVC est un framework basé sur le Web pour implémenter l'architecture MVC.

Spring Boot est un outil orienté vers le programmeur. Le programmeur doit se concentrer sur la programmation et l'outil doit se concentrer sur les configurations. Nous n'avons donc pas besoin de perdre notre temps à configurer un tas de xml pour créer un simple «Bonjour tout le monde».



1

Spring MVC et Spring Boot existent dans un but différent. Il n'est donc pas sage de se comparer les uns aux autres comme les prétendants.

Qu'est-ce que Spring Boot?

Spring Boot est un cadre pour empaqueter l'application Spring avec des valeurs par défaut sensibles. Qu'est-ce que ça veut dire?. Vous développez une application Web à l'aide de Spring MVC, Spring Data, Hibernate et Tomcat. Comment empaqueter et déployer cette application sur votre serveur Web. À partir de maintenant, nous devons écrire manuellement les configurations, les fichiers XML, etc. pour le déploiement sur le serveur Web.

Spring Boot le fait pour vous avec une configuration Zero XML dans votre projet. Croyez-moi, vous n'avez pas besoin de descripteur de déploiement, de serveur Web, etc. Spring Boot est un cadre magique qui regroupe toutes les dépendances pour vous. Enfin, votre application Web sera un fichier JAR autonome avec des serveurs intégrés.

Si vous ne savez toujours pas comment cela fonctionne, veuillez lire le développement du cadre de microservices à l'aide de Spring Boot.

Qu'est-ce que Spring MVC?

Il s'agit d'un cadre d'application Web traditionnel qui vous aide à créer des applications Web. Il est similaire au framework Struts.

Un Spring MVC est un framework Java utilisé pour créer des applications Web. Il suit le modèle de conception Model-View-Controller. Il implémente toutes les fonctionnalités de base d'un cadre de ressort de base comme l'inversion de contrôle, l'injection de dépendance.

Un Spring MVC fournit une solution élégante pour utiliser MVC dans Spring Framework à l'aide de DispatcherServlet. Ici, DispatcherServlet est une classe qui reçoit la demande entrante et la mappe à la bonne ressource telle que les contrôleurs, les modèles et les vues.

J'espère que cela vous aide à comprendre la différence.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.