Diferencia entre Spring MVC y Spring Boot


234

Acabo de empezar a aprender Spring. En mi próximo paso, me gustaría desarrollar aplicaciones web más grandes.

Ahora me pregunto si debería comenzar con Spring Boot o Spring MVC. Ya he leído algunas cosas, pero es confuso porque ambos se parecen.

Entonces, ¿cuáles son las diferencias entre los dos?

Respuestas:


320
  • Spring MVC es un marco MVC orientado a HTTP completo administrado por Spring Framework y basado en Servlets. Sería equivalente a JSF en la pila JavaEE. Los elementos más populares son las clases con anotaciones @Controller, donde implementa métodos a los que puede acceder utilizando diferentes solicitudes HTTP. Tiene un equivalente @RestControllerpara implementar API basadas en REST.
  • Spring boot es una utilidad para configurar aplicaciones rápidamente, que ofrece una configuración inmediata para crear aplicaciones con Spring. Como sabrán, Spring integra una amplia gama de módulos diferentes bajo su paraguas , como spring-core , spring-data , spring-web (que incluye Spring MVC, por cierto) y así sucesivamente. Con esta herramienta, puede decirle a Spring cuántos de ellos usar y obtendrá una configuración rápida para ellos (se le permite cambiarlo usted mismo más adelante).

Por lo tanto, Spring MVC es un marco para ser utilizado en aplicaciones web y Spring Boot es un inicializador de proyecto listo para producción basado en Spring . Le puede resultar útil visitar la wiki etiqueta Spring MVC , así como la etiqueta wiki primavera de arranque en el SO.


29
Sí _ + 1, Spring boot es solo una herramienta de configuración automática (empaquetada como marco). Spring mvc es framework web
Plain_Dude_Sleeping_Alone

2
¿Eso significa que Spring Boot se usa para mostrar la página de vista (HTML) solo para un controlador que devuelve y publica JSON, y si quiero usar la vista para mostrar HTML, tengo que usar Spring MVC?
Osama Al-Banna

2
@ OsamaAl-Banna Spring MVC es una tecnología de capa de vista, básicamente maneja las respuestas de solicitud HTTP, actuando como un controlador (para HTML, puede combinarlo con thymeleaf, por ejemplo, para REST + JSON, úselo como está, porque la conversión JSON se realiza con el Jackson integrado). Spring Boot integra todos los proyectos generales de Spring (MVC + Data + Core ...) y proporciona una configuración rápida de producción para usarlos.
Xtreme Biker

3
¿Significa esto que puedo configurar mi aplicación web y Spring Bootluego cumplir con la funcionalidad web Spring MVC?
Mike

1
@Mike sure it does
Xtreme Biker

105

Spring MVC y Spring Boot están bien descritos en otras respuestas y, por lo tanto, sin repetir eso, permítanme saltar directamente a los detalles. Spring Boot y Spring MVC no son comparables ni se excluyen mutuamente. Si desea realizar el desarrollo de aplicaciones web con Spring, de todos modos usaría Spring MVC . Su pregunta se convierte en si usar Spring Boot o no.

Para desarrollar aplicaciones comunes de Spring o comenzar a aprender Spring, creo que se recomienda usar Spring Boot . Facilita considerablemente el trabajo, está listo para la producción y está siendo rápidamente adoptado ampliamente.

A veces he visto principiantes haciendo esta pregunta porque en STS (Spring Tool Suite) hay dos asistentes: uno para crear un proyecto Spring Boot y otro para crear un proyecto Spring MVC. Por lo tanto, mi recomendación sería crear un proyecto Spring Boot y elegir Web como módulo en eso.


1
Cuando usas spring-boot (con spring-data-rest y spring-web) tienes el principio MVC aquí, ¿verdad? Estaba confundido porque pensé que Spring MVC es la única versión de Spring que usa el modelo MVC.
watchme

55
spring-web no es más que el módulo spring-mvc
Sanjay


23

En términos simples se puede expresar como:

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

Y Spring Boot es un marco de opinión, por lo que su construcción tiene en cuenta el rápido desarrollo, la menor necesidad de tiempo para la configuración y un muy buen apoyo de la comunidad.


19

Spring MVCes un subproyecto de Spring Framework, dirigido al diseño y desarrollo de aplicaciones que utilizan el patrón MVC (Modelo-Vista-Controlador). Spring MVC está diseñado para integrarse total y completamente con Spring Framework y transitivamente, la mayoría de los demás subproyectos.

Spring Bootpuede entenderse bastante bien a partir de este artículo por el equipo de Spring Engineering. Supuestamente es obstinado, es decir, aboga fuertemente por un cierto estilo de desarrollo rápido, pero está diseñado lo suficientemente bien como para acomodar excepciones a la regla, si lo desea. En resumen, es una convención sobre la metodología de configuración que está dispuesta a comprender su necesidad de romper la convención cuando se justifique.


17

Aquí hay algunos puntos principales que diferencian Spring, Spring MVC y Spring Boot:

Primavera :

  1. La principal diferencia es la "capacidad de prueba".
  2. La primavera viene con el DI y el COI. A través de los cuales todo el trabajo duro realizado por el sistema no necesitamos hacer ningún tipo de trabajo (como, normalmente definimos el objeto de la clase manualmente, pero a través de Di simplemente anotamos con @Service o @Component; la clase coincidente los administra).
  3. A través de la anotación @Autowired, nos burlamos () fácilmente en el momento de la prueba de la unidad.
  4. Código de duplicación y fontanería. En JDBC, escribimos el mismo código varias veces para realizar cualquier tipo de operación de base de datos. Spring resuelve ese problema a través de Hibernate y ORM.
  5. Buena integración con otros marcos. Como Hibernate, ORM, Junit y Mockito.

Spring MVC

  1. Spring MVC framework es un módulo de spring que proporciona desarrollo de aplicaciones web orientadas a HTTP.
  2. Spring MVC tiene una separación clara de código en la lógica de entrada (controlador), lógica de negocios (modelo) y lógica de UI (vista).
  3. El patrón Spring MVC ayuda a desarrollar aplicaciones web flexibles y poco acopladas.
  4. Proporcione varias formas codificadas para personalizar su aplicación según sus necesidades.

Arranque de primavera:

  1. Cree una aplicación rápida para que, en lugar de administrar una sola aplicación web grande, las dividamos individualmente en diferentes microservicios que tienen su propio alcance y capacidad.
  2. Configuración automática usando Web Jar: en Spring normal hay mucha configuración como DispatcherServlet, Component Scan, View Resolver, Web Jar, XML. (Por ejemplo, si quisiera configurar el origen de datos, Entity Manager Transaction Manager Factory). Configure automáticamente cuando no esté disponible usando class-path.
  3. Viene con Spring Starters predeterminados, que vienen con alguna dependencia de configuración de Spring predeterminada (como Spring Core, Web-MVC, Jackson, Tomcat, Validación, Enlace de datos, Registro). No se preocupe por el problema de versiones también.

(Evolución como: Spring -> Spring MVC -> Spring Boot, por lo que la versión más nueva tiene la compatibilidad de las características de la versión anterior). Nota: No contiene todos los puntos.


10

SpringBoot en realidad está preconfigurado para reducir la configuración de la caldera y proporcionar la forma más fácil o rápida de iniciar su aplicación.

SpringBoot toma el dolor de cabeza de la configuración del desarrollador en sí mismo en lugar de Spring.

Implícitamente, SpringBoot se basa en el concepto de Spring Framework como bean, controlador, servicios, jpa, etc.

Puedes decir que SpringBoot es un envoltorio de Spring.

En SpringBoot, el puerto predeterminado del servidor es 8080, pero si desea cambiar, vaya a su application.properties y escriba

server.port = 8084


10
  • Con el arranque de primavera no necesitará construir la configuración. Esto se habrá hecho automáticamente cuando cree el proyecto.

  • Si usa Spring MVC necesita construir la configuración usted mismo. Es más complicado, pero es crucial.


Aclaración simple y elegante
Sritam Jagadev

8

Sin repetir lo mismo en respuestas anteriores,
estoy escribiendo esta respuesta para las personas que buscan comenzar un nuevo proyecto y no saben cuál es el mejor marco para iniciar su proyecto. Si eres un principiante en este marco, lo mejor que prefiero es usar Spring Boot (con STS / Spring Tool Suite ). Porque ayuda mucho. Hace todas las configuraciones por sí solo. Además, use Hibernate con spring-boot como marco de la base de datos. Con esta combinación, su aplicación será la mejor. Puedo garantizar eso con mis experiencias.

Incluso este es uno de los mejores marcos para JEE (en el presente), esto va a morir en el futuro cercano. Hay alternativas livianas por venir. Así que manténgase actualizado con su experiencia, no se adhiera a un marco particular. Lo mejor es tener fluidez en los conceptos, no en los marcos.


5

Piensa de esta manera:

Spring MVC es un marco basado en web para implementar la arquitectura MVC.

Spring Boot es una herramienta orientada al programador. El programador debe centrarse en la programación y la herramienta debe centrarse en las configuraciones. Por lo tanto, no necesitamos perder nuestro tiempo configurando un montón de xml para crear un simple 'Hola mundo'.



1

Spring MVC y Spring Boot existen para diferentes propósitos. Por lo tanto, no es aconsejable compararse entre sí como competidores.

¿Qué es Spring Boot?

Spring Boot es un marco para empaquetar la aplicación de primavera con valores predeterminados razonables. ¿Qué significa esto?. Está desarrollando una aplicación web con Spring MVC, Spring Data, Hibernate y Tomcat. ¿Cómo empaqueta e implementa esta aplicación en su servidor web? A partir de ahora, tenemos que escribir manualmente las configuraciones, archivos XML, etc. para implementar en el servidor web.

Spring Boot lo hace por usted con la configuración de XML cero en su proyecto. Créame, no necesita un descriptor de implementación, un servidor web, etc. Spring Boot es un marco mágico que agrupa todas las dependencias por usted. Finalmente, su aplicación web será un archivo JAR independiente con servidores integrados.

Si todavía está confundido acerca de cómo funciona esto, lea sobre el desarrollo del marco de microservicios utilizando Spring Boot.

¿Qué es Spring MVC?

Es un marco de aplicación web tradicional que le ayuda a crear aplicaciones web. Es similar al marco Struts.

Un Spring MVC es un marco de Java que se utiliza para crear aplicaciones web. Sigue el patrón de diseño Modelo-Vista-Controlador. Implementa todas las características básicas de un marco de resorte central como Inversion of Control, Dependency Injection.

Un Spring MVC proporciona una solución elegante para usar MVC en Spring Framework con la ayuda de DispatcherServlet. Aquí, DispatcherServlet es una clase que recibe la solicitud entrante y la asigna al recurso correcto, como controladores, modelos y vistas.

Espero que esto te ayude a entender la diferencia.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.