Spring Boot es una de las tecnologías dentro del mundo de Spring de las que más se usa actualmente .¿Qué es y cómo funciona Spring Boot? . Para entender el concepto primero debemos reflexionar sobre cómo construiamos aplicaciones con Spring Framework antiguamente.

Primeros pasos sin Spring Boot
Fundamentalmente existian tres pasos a realizar . El primero es crear un proyecto Maven/Gradle y descargar las dependencias necesarias. En segundo lugar esta el proceso de crear la aplicación , pero para ello nos guste o no debemos abordar un proceso amplio de configuración de la aplicación , con ficheros XML o anotaciones y configuraciones muy especificas que muchas veces solo un experto era capaz de abordar con garantias. Por último debiamos desplegarla en un servidor.
Problemas
Si nos ponemos a pensar un poco a detalle en el tema , únicamente el paso dos es una tarea de desarrollo y dentro de esa tarea 2 incluso la parte de configuración no esta claro que sea desarrollo en sí. Son cosas que están más orientados a infraestructura que al desarrollo en sí mismo.

No deberíamos tener que estar eligiendo continuamente las dependencias y el servidor de despliegue así como realizar una configuración inicial .Esto es un tema solo para expertos y que aporta realmente poco debería ser automatico.
Spring Boot
SpringBoot nace con la intención de simplificar los pasos 1 y 3 . Simplificar la configuración , que nos podamos centrar en el desarrollo de nuestra aplicación. ¿Cómo funciona?. El enfoque es sencillo y lo entenderemos realizando un ejemplo. Para ello nos vamos a conectarnos al asistente de Boot que se denomina Spring Initializer.

String Boot Starter y simplificaciones
El asistente es intuitivo , elegimos el package al que queremos que nuestras clases pertenezcan , elegimos el nombre del proyecto y por último las dependencias. Eso sí ya no se trata de elegir JAR por JAR sino por tipo de aplicación que necesitamos a este concepto se le denomina Spring Starter. Por lo tanto en vez de tener que elegir 10 o 20 dependencias es mucho más cómodo elegir 2 starters y Spring Boot se encarga del resto.

Starters y ventajas
La ventaja es abismal ya que no solo reduzco las dependencias sino también los temas a configurar ya que los starter pueden encargarse de añadir carpetas etc.
Construyendo la aplicación
En este caso voy a construir una aplicación Spring MVC y elijo la dependencia web o Starter Web. Pulsamos generar proyecto y nos descargará un proyecto Maven en formato zip . Descomprimimos el proyecto y este es su contenido.

Una aplicación de Spring con estructura Maven totalmente configurada y carpetas adicionales para cubrir nuestras necesidades . El siguiente paso importar esta aplicación a nuestro Eclipse. Vamos a ver el contenido de la clase HolaSpringBootApplication
package com.arquitecturajava;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class HolaSpringBootApplication {
public static void main(String[] args) {
SpringApplication.run(HolaSpringBootApplication.class, args);
}
}
Esta clase es la encargada de arrancar nuestra aplicación de Spring a diferencia de un enfoque clásico no hace falta desplegarla en un servidor web ya que Spring Boot provee de uno (contiene un Tomcat embebido)
Spring Boot Controller
Vamos a construir un controlador de HolaMundo sencillo:
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@RestController
public class ControladorHola {
@RequestMapping("/")
String hola() {
return "HolaMundo";
}
}
Este controlador registra la url de / para que nos devuelva “HolaMundo” . Es momento de ejecutar nuestra aplicación como una aplicación de consola utilizando botón derecho run as Java Application en el fichero de HolaSpringBootApplication. Esto abrirá un servidor web y accederemos a la url.

SpringBoot nos ha simplificado toda la operativa a la hora de construir la aplicación prácticamente no hemos tenido que seleccionar dependencias de Spring y no ha hecho falta definir ningun servidor Tomcat en nuestro entorno de desarrollo ya que Spring Boot trae uno integrado. Vamos a ver un ejemplo desde cero con un video del curso gratuito de Spring Boot ;).
Spring Boot Tomcat y Docker
¿Porque Spring Boot trae integrado Tomcat? . Muy sencillo porque a partir de ahora los despliegues no se van a realizar en Servidores Web Standard que almacenan decenas de aplicaciones sino que cada una de las aplicaciones se va a desplegar en un contenedor Docker completamente aislada del resto e independiente . El contenedor necesita que la aplicación sea completamente operativa por si sola.

Spring Boot WAR
Si tu problema es que hoy por hoy no tienes contenedores Docker ni tienes Kubernetes entre tus herramientas de despliegue , no hay problema . Puedes seguir usando Spring Boot y desplegarlo en un entorno de Tomcat o JBoss directamente simplemente modificando el arranque y haciendo que nuestra aplicación en vez de desplegarse como JAR se despliegue como WAR.

Esto no cambiara en gran manera la clase principal
@SpringBootApplication
public class HolaSpringBootApplication {
public static void main(String[] args) {
SpringApplication.run(HolaSpringBootApplication.class, args);
}
}
Pero añadirá una nueva clase que se encarga de integrarlo con Tomcat de forma transparente:
package com.arquitecturajava.HolaMundo;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
public class ServletInitializer extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(HolaMundoApplication.class);
}
}
Spring Boot vs. Quarkus: ¿Cuál elegir?
Tanto Spring Boot como Quarkus son frameworks populares para el desarrollo de aplicaciones Java, pero tienen enfoques diferentes. Aquí te presentamos una comparación clave entre ambos.
1. Propósito y enfoque
- Spring Boot: Facilita la creación de aplicaciones empresariales con mínima configuración. Es ideal para monolitos y microservicios, con un ecosistema robusto.
- Quarkus: Optimizado para microservicios y entornos cloud-native, se destaca por su rapidez y bajo consumo de memoria, ideal para contenedores y funciones serverless.
2. Rendimiento
- Spring Boot: Es flexible, pero su arranque puede ser más lento debido a su sistema de auto-configuración.
- Quarkus: Con GraalVM, Quarkus permite compilar imágenes nativas, ofreciendo tiempos de arranque más rápidos y menor consumo de memoria.
3. Ecosistema y compatibilidad
- Spring Boot: Ofrece un ecosistema muy maduro y amplio, con soporte para muchas bibliotecas.
- Quarkus: Aunque es más nuevo, su integración con herramientas como Hibernate es sólida, aunque su ecosistema aún está en crecimiento.
4. Compatibilidad con GraalVM
- Spring Boot: Tiene soporte en desarrollo para GraalVM, pero requiere ajustes.
- Quarkus: Optimizado para GraalVM desde su creación, facilitando la generación de imágenes nativas.
5. Cuándo usar cada uno
- Usa Spring Boot si…: Necesitas flexibilidad y un ecosistema probado para aplicaciones empresariales.
- Usa Quarkus si…: Buscas rapidez en el arranque, menor consumo de recursos y desplegar microservicios en entornos cloud-native.
Conclusión
Elige Spring Boot para proyectos empresariales robustos y flexibles. Opta por Quarkus si tu prioridad es el rendimiento en la nube y los entornos serverless.


Necesito aprender Spring boot Java etc. Para desarrollar
Tienes mis cursos gratuitos 🙂 y luego los de pago
Nuevo lanzamiento Spring Boot Septiembre de 2022 en español. En e-book para todo hablahispana.
https://www.amazon.com/-/es/Rafael-Benedettelli-ebook/dp/B0BGJK3GHD
En tapa blanda disponible para Argentina por ml
https://articulo.mercadolibre.com.ar/MLA-1170165058
Cecilio,
¿Para JSF es la misma configuración que hizo en el video? o hay que configurar algo adicional? he visto algunos ejemplos de configuraciones como springboot + joinfaces que incluyen JSF + primefaces + richfaces + omnifaces y otros frameworks. Pero ¿con la configuracion que usted hizo en el video y agregando las dependencias de JSF y Primefaces seria suficiente? o habria que realizar configuraciones adicionales?
No supongo que tengas que dar de alta algunas cosas adicionales .Ahora mismo no tengo ningún ejemplo concreto 🙁
Buenas tardes, que servidor local recomiendan para el deploy de aplicaciones con Spring Boot? y por que?
Saludos.
Se desplieguan solas ya que trae un tomcat integrado
buenas, una pregunta, si quisiera hacer una aplicación de escritorio. Cuals seria un framework recomendado.
No hay muchos frameworks para Escritorio casi todo se sigue haciendo con Swing . Eso si siempre puedes integrar Spring y JPA en esas aplicaciones ya que son frameworks neutros. Un framework que es de JavaScript que tiene buena fama en escritorio es Electron
Lo que pasa es que Swing es complejo y requieres muchos conocimientos sólidos, sobre todo al manejar árboles, tablas e intercomunicación entre frames; pero una vez que lo entiendes y los dominas no lo vas a querer cambiar.
JavaFX es mas personalizado que Java swing podes ponerles estilos.
Fantastico tutorial:
Me da error en el POM:
Justo aqui:
org.springframework.boot
spring-boot-starter-parent
2.1.2.RELEASE
Alguna sugerencia ??
Pues así a bote pronto no sabría decirte.
Revisa tus dependencias que agregaste.
Probablemente debe ser la versión de la librería que esta llamando desde Maven.
Hola Cecilio Álvarez, quería saber si das algun curso en línea, trabajo con Sprig Boot, Mybatis y Prime faces en conjunto.
Pero tiene que ser avanzado, para ser mas rapido en los Proyectos.
Gracias
Pues en estos momentos no lo tengo pensado , he grabado algunos cursos online que se estan vendiendo bien y a futuro grabaré más cosas pero a corto plazo no te se decir que exactamente
Hola Cecilio, ¿como podria optar a los cursos online de Spring Boot que has grabado? En caso de que así no sea, ¿sabrias decirme algún curso que merezca la pena o alguien que pueda impartir clases particulares?
Muchisimas gracias.
Un saludo,
No tengo ningún curso de Spring boot grabado ,tengo uno de Spring a secas , supongo que en los próximos meses grabe algo de Boot pero lo estoy dando una vuelta 🙂
Cecilia Álvaresz el curso de spring que tienes donde lo estas vendiendo me podrías pasar tu portal web para comprarlo?
prueba este link https://cursos.arquitecturajava.com/p/spring-boot/?product_id=1049303&coupon_code=SPRINGBOOT2019&preview=logged_out
hola Cecilio.
Si tengo varios endpoint en una clase con @RestController imagino que estos van a funcionar en el mismo microservicio… entonces tendría que crear un proyecto por cada endpoint?
no puedes tener varios endpoins en el mismo proyecto
me refiero a 2 métodos con @RequestMapping
sin problema
Hola tengo una duda, ¿Por què cuando creo la clase ControladorHola, en un paquete diferente NO FUNCIONA?
Revisa los component scan que es la anotacion que se encarga del registro
hola a todos, estoy en busca de un middleware java spring si alguien se interesa favor de enviarme sus datos de contacto.
Tengo una duda. Supongamos que estoy creando una REST Api donde cada endpoint lo tendré como un microservicio independiente. Cada microservicio es un proyecto nuevo de spring boot independiente? O de alguna manera puedo vincular bajo un proyecto spring “root” y los N microservicios que se crearía serían “children” de este proyecto “root” ?? Una arquitectura así es posible? Es una duda que tengo. Agradecido de antemano
Si lo quieres trabajar como microservicios entonces, por cada microservicio crea un proyecto independiente, puesto que si lo haces dentro de una esto sería un proyecto con N módulos
Hola Cecilio,
Antes que nada gracias por el post, muy bueno…
Tengo algo realmente inquietante, es posible Spring Boot + Jboss EAP 6.4 ?
Y en caso afirmativo, como se podría llevar a cabo?
Pues no lo he probado pero en principio debiera ser posible lo que pasa es que Jboss usa los jboss modules y habrá que andarse con cuidado
Primero que nada, muchas gracias Maestro.
Segundo hay alguna manera de hacer el deploy en un servidor externo ?
Gracias.
Si en principio vale con eliminar la dependencia de tomcat e implementar un Web Initializer , a ver su escribo algo sobre el tema 🙂
Buenas,
¿cómo funciona cuando ya tenemos instalado un tomcat en la máquina? ¿levanta dos sobre el mismo puerto?
Y si no hay ninguno instalado ¿como instalo dos aplicaciones en el mismo servidor?
Gracias
Esta semana intento escribir algo sobre el tema , pero en principio la respuesta es que hay que usar containers docker 🙂
Hola, ya has escrito algo sobre el tema?
No todavía no pero espero en dos o tres semanas ir añadiendo cosas sobre docker y spring boot 🙂
Tienes algo sobre docker? y podrias escribir algo sobre microservicios y kubernates?
Saludos
No , en estos momentos , supongo que escriba algo más adelante ya que tengo q abordar algunos proyectos de ese estilo a fin de año
Interesante y super simple pero queda una gran caja negra, que servidor se encarga de desplegar la aplicación? que pasa si quiero cambiar ek puerto de escucha o configurar JDNI?
modificas el fichero de configuracion
Heyyyy desde Colombia.
Un abrazo, un saludo y muchas gracias brother.
Ejemplo sencillo, práctico y muy fácil de implementar.
Gracias
gracias 🙂
Amigo saludos muy buen post, una consulta:
Siguiendo esto ejemplo como haría yo para luego hacer el deploy en produccion?, es decir: Tomo este ejemplo base y ahora quiero instalarlo en el cliente (asi basico que lo pueda ejecutar desde la linea de comando).
Mi pregunta es como hago para hacer el deploy final? se exporta solo como una jar ejecutable? o para el caso de spring-boot hay que instalar mas recursos/herramienta (aparte de la JVM) en el cliente?
Espero puedan aclarar mi duda.
Saludos.
Spring boot incluye integrado un tomcat, así que con arrancarlo vale
Excelente explicación, muy acertada la lógica de spring boot al unificar los pasos de selección de dependencias y despliegue en el servidor, con tu explicación nos queda muy claro el tema.
Excelente articulo rodrigo. Aunque tambien me queda la duda ¿que pasa cuando quiero desplegar la aplicacion en un servidor distinto al embebido por el propio spring boot?¿Se debe realizar un war?
No debieras tener problemas , Spring boot no es obligatorio que use tomcat embebido
Informacion muy concreta. muchas gracias
De nada 🙂
Hola Cecilio que buen post, tengo una pregunta cual es el servidor web que tiene embebido que tiene el Spring Boot
Tiene un tomcat 🙂
Es recomendable usar Spring Boot para un proyecto grande o es mejor solo usar Spring.
Se puede usar sin problemas , pero cuando uno empieza un proyecto grande es mejor minimizar los riesgos , si no se conoce una tecnología hay que valorarla con calma 🙂
Excelente respuesta Cecilio Alvarez. Admiro tu blog.
¡Saludos!
A mi no me entra en la cabeza…que pasa con el servidor? Springboot empaqueta uno en la aplición? como un jar?
Si son las nuevas Arquitecturas de MicroServicios habrá que ver como avanza todo
me iluminó jaja. buen post
gracias
Cecilio Álvarez gran articulo!. Una pregunta: Es factible con Spring Boot construir microservicios?. Gracias de antemano.
Aplausos !! ( no es con vos Cecilio, admiro tu trabajo ) perooo… Grails existe hace unos cuantos años .. y te da, hace años lo que java 8 recien empieza a decir.. bueno.. .
Tienes mucha razón David en una parte , Grails aporta muchas cosas y es muy práctico , yo en su momento pensé que se haría un hueco muy grande. Luego la reflexión que he hecho es que al final la gente trabaja con Java ya que es lo que más conoce. Cuesta cambiar de lenguaje … aunque sea un lenguaje tan sencillo como Grails pero a la gente le cuesta 🙂
gracias por el post! muy bueno
de nada 🙂
Claro, conciso y muy útil. Gracias.
de nada 🙂