StudyFiWiki
WikiAplicación web
StudyFi

Materiales de estudio con IA para todos los estudiantes. Resúmenes, tarjetas, tests, podcasts y mapas mentales.

Materiales de estudio

  • Wiki
  • Aplicación web
  • Registro gratis
  • Sobre StudyFi

Legal

  • Términos del servicio
  • RGPD
  • Contacto
Descargar en
App Store
Descargar en
Google Play
© 2026 StudyFi s.r.o.Creado con IA para estudiantes
Wiki💻 Ciencias de la ComputaciónIntroducción a Spring Boot

Introducción a Spring Boot

Domina Spring Boot desde cero. Descubre qué es, cómo funciona, y crea tu primera app. Guía esencial con Inyección de Dependencias y más. ¡Empieza hoy!

¡Bienvenido al fascinante mundo de Spring Boot! Si estás dando tus primeros pasos en el desarrollo de aplicaciones Java o buscando optimizar tus proyectos, has llegado al lugar correcto. Esta introducción a Spring Boot te guiará a través de sus fundamentos, características clave y cómo empezar a construir tus propias aplicaciones de manera eficiente. Prepárate para descubrir por qué Spring Boot es una herramienta indispensable para desarrolladores modernos.

¿Qué es Spring Framework y cómo evolucionó Spring Boot?

Spring Framework es uno de los frameworks más populares para el desarrollo de aplicaciones con Java, nacido en 2003 como alternativa a los Enterprise Java Beans (EJB) de Java Enterprise Edition. En sus inicios, se destacó como un Contenedor de Inversión de Control (IoC Container) que facilitaba la aplicación del patrón de Inyección de Dependencias.

Con el tiempo, Spring Framework creció, incorporando nuevos módulos sobre su núcleo. Además, el ecosistema de Spring se expandió con otros proyectos (Spring Projects) que ofrecen soluciones para diversos aspectos de las aplicaciones empresariales modernas. Algunos ejemplos notables incluyen:

  • Spring Data: Acceso consistente a datos (bases de datos relacionales y no relacionales).
  • Spring Security: Seguridad para aplicaciones mediante autenticación y autorización.
  • Spring Boot: Simplifica el desarrollo de aplicaciones con Spring Framework, reduciendo tareas de infraestructura.

La esencia de Spring Boot: Desarrollo Simplificado

Spring Boot surgió en 2014 para abordar la necesidad de un desarrollo más directo y simple con Spring Framework, eliminando la necesidad de extensos archivos de configuración XML. Se basa en el principio de "Convention Over Configuration" (convención por encima de configuración), lo que significa que gran parte de la configuración se establece por defecto, permitiéndote concentrarte en la lógica de negocio.

Las principales características de Spring Boot incluyen:

  • Creación de aplicaciones stand-alone que inician desde el método main().
  • Servidor de aplicaciones embebido (Tomcat, Jetty o Undertow) directamente en las aplicaciones, eliminando la necesidad de despliegues externos.
  • Spring Boot Starters: Descriptores de dependencias que simplifican la configuración de proyectos.
  • Configuración automática por defecto basada en las dependencias .jar añadidas.
  • Características avanzadas para producción (métricas, chequeo de salud, configuración externa).
  • No genera código y no requiere configuración XML.
  • Se integra fluidamente con otros frameworks y tecnologías.

Creando tu primer proyecto con Spring Initializr

Para empezar un proyecto Spring Boot, la herramienta Spring Initializr es tu mejor aliada. Permite generar proyectos en pocos pasos y está disponible online en start.spring.io.

Con Spring Initializr, puedes:

  • Seleccionar el gestor de dependencias (Maven o Gradle).
  • Elegir el lenguaje de programación (Java, Kotlin o Groovy).
  • Definir la versión de Spring Boot, los metadatos del proyecto y el tipo de empaquetado (.jar o .war).
  • Indicar la versión del JDK y seleccionar las dependencias iniciales que deseas incorporar.

También puedes usar Spring Initializr directamente desde tu IDE preferido (Visual Studio Code, Eclipse). Por ejemplo, en Visual Studio Code, con la extensión Spring Boot Extension Pack, puedes usar CTRL + SHIFT + P y buscar Spring Initializr: Create a Maven Project....

Estructura típica de un proyecto Spring Boot Web

Una vez generado el proyecto (por ejemplo, con Maven y la dependencia Spring Web), obtendrás una estructura predeterminada de archivos y carpetas:

  • /pom.xml: Archivo de configuración Maven, contiene información del proyecto, dependencias y plugins.
  • /src/main/java/...: Código fuente de la aplicación (packages, clases Java, interfaces).
  • /src/main/resources/...: Contiene recursos como:
  • /static: Recursos estáticos (imágenes, archivos .css, .js).
  • /templates: Plantillas para vistas MVC (ej. archivos .html con Thymeleaf).
  • /application.properties: Archivo de texto para definir propiedades nombre-valor de la aplicación.

Gestión de dependencias con Maven y Spring Boot Starters

Apache Maven es una herramienta esencial para la construcción y gestión de proyectos Java. Utiliza el Project Object Model (POM) en el archivo pom.xml para describir el proyecto y sus dependencias. Spring Boot simplifica esto con los Spring Boot Starters.

Los Starters son descriptores de dependencias que se incluyen en el pom.xml y permiten incorporar conjuntos de dependencias listos para usar en aplicaciones Spring, sin preocuparse por nombres y versiones específicas. Esto reduce significativamente la complejidad de la configuración del pom.xml.

Spring Web MVC: Arquitectura para aplicaciones web

Spring Web MVC es un framework popular para desarrollar aplicaciones web siguiendo el patrón arquitectónico MVC (Model-View-Controller). Este patrón separa las responsabilidades en tres tipos de componentes:

  • Model: Clases que describen la estructura y lógica de negocio de la aplicación, incluyendo el acceso a datos.
  • View: Interfases de usuario que muestran información y permiten la entrada de datos.
  • Controller: Clases que reciben solicitudes del usuario, utilizan el modelo para procesarlas y deciden qué vista usar para mostrar el resultado.

Para usar Spring Web MVC en Spring Boot, se incluyen dependencias como Spring Web y Thymeleaf. Este framework utiliza una variante del patrón MVC conocida como Front Controller, donde un DispatcherServlet centralizado recibe todas las solicitudes y las delega a controladores más específicos.

El DispatcherServlet gestiona un Servlet WebApplicationContext que contiene:

  • Controladores específicos definidos por el desarrollador.
  • Un HandlerMapping para resolver el mapeo de URLs a estos controladores.
  • Un ViewResolver para obtener la vista seleccionada por el controlador.

También puede obtener beans del Root WebApplicationContext, que contiene componentes de negocio y repositorios compartidos.

Spring Container y Spring Beans: El corazón de Spring

En el núcleo de Spring Framework se encuentra el Spring IoC Container (Contenedor de Inversión de Control). Este contenedor utiliza el patrón de Inyección de Dependencias para implementar el Principio de Inversión de Dependencias. Su función principal es crear, conectar, configurar y manejar el ciclo de vida de los objetos.

A los objetos gestionados por el Spring Container se les conoce como Spring Beans. Puedes registrar tus beans de dos maneras principales:

  1. Con @Bean: Aplicando la annotation @Bean a métodos que devuelven instancias de los beans, dentro de una clase de configuración.
  2. Con Annotations de Estereotipo: Aplicando annotations del paquete org.springframework.stereotype a sus clases correspondientes. Estas son especializaciones de @Component:
  • @Component: Declara la clase como un bean genérico.
  • @Repository: Declara la clase como un bean de acceso a datos.
  • @Service: Declara la clase como un bean que implementa lógica de negocio.
  • @Controller (o @RestController): Declara la clase como un bean controlador MVC.
  • @Configuration: Declara la clase como un bean de configuración (usado junto a @Bean).

Los beans declarados con estas annotations son detectados y registrados automáticamente durante un proceso llamado Component Scanning. Puedes darles un nombre identificador usando el elemento value de la annotation.

Cómo construir Spring Beans: Requisitos de Constructores

Los Spring Beans deben proveer alguna de las siguientes variantes de constructores para que el Spring Container pueda gestionarlos correctamente:

  • Solo el constructor por defecto.
  • Varios constructores, donde uno esté marcado con @Autowired y reciba beans registrados en sus parámetros.
  • Un solo constructor que reciba beans registrados en sus parámetros (a partir de Spring Framework 4.3, no necesita @Autowired).

Component Scanning: Detección automática de beans

El Component Scanning es el proceso que autodetecta y registra como beans en el Spring Container los componentes marcados con annotations de estereotipo. Se habilita mediante la annotation @ComponentScan en una clase de configuración, indicando el paquete base desde donde buscar componentes.

En una aplicación Spring Boot, la clase principal con el método main() ya incorpora la annotation @SpringBootApplication, que es equivalente a aplicar @Configuration, @EnableAutoConfiguration y @ComponentScan simultáneamente.

Ámbito de los Spring Beans: Controlando su ciclo de vida

Los Spring Beans tienen un ámbito (Scope) que define su ciclo de vida y visibilidad. Este ámbito se configura con la annotation @Scope aplicada a la clase del bean o al método @Bean.

Las versiones de Spring Framework definen los siguientes ámbitos:

  • singleton: El Spring Container crea una única instancia compartida por todas las solicitudes. Es el scope por defecto.
  • prototype: Se crea una nueva instancia cada vez que se solicita el bean al Spring Container.

Para aplicaciones web, existen scopes adicionales:

  • request (@RequestScope): Una instancia por cada solicitud web.
  • session (@SessionScope): Una instancia por cada sesión de usuario web particular.
  • application (@ApplicationScope): Una única instancia para todo el ciclo de vida del ServletContext.
  • websocket: Una instancia por cada sesión WebSocket particular.

Ciclo de vida de los Beans: Comportamiento en la creación y destrucción

Spring permite adjuntar comportamiento específico al momento de crear o destruir un bean utilizando annotations:

  • @PostConstruct: Se invoca al método marcado una vez, justo después de crear el bean e inicializar sus propiedades.
  • @PreDestroy: Se invoca al método marcado una vez, justo antes de que Spring destruya el bean y lo saque del Spring Container.

Estos métodos pueden tener cualquier visibilidad (no final ni static), no deben recibir parámetros y deben ser procedimientos void.

Inyección de Dependencias: Desacoplamiento y eficiencia

Una de las mayores ventajas del Spring Container es la facilidad con la que permite aplicar el patrón de Inyección de Dependencias. El contenedor se encarga de proveerte las instancias de otros beans donde las necesites, sin que tengas que preocuparte por crearlas tú mismo. Al combinar esto con interfaces, se logra un alto grado de desacoplamiento entre los componentes de la aplicación.

La annotation @Autowired se utiliza para solicitar al Spring Container la inyección de una dependencia en un atributo, un setter o un constructor de un bean.

Consideraciones importantes sobre la inyección de dependencias:

  • Si el contenedor no encuentra un bean requerido, se lanza NoSuchBeanDefinitionException.
  • La dependencia puede declararse opcional con el elemento booleano required de @Autowired.
  • Por defecto, @Autowired resuelve por tipo/nombre. Si hay ambigüedad (varios beans del mismo tipo), se lanza NoUniqueBeanDefinitionException.
  • Para resolver ambigüedades, usa @Qualifier con el identificador del bean deseado.
  • @Primary puede usarse en una clase de bean o en un método @Bean para darle mayor prioridad en caso de ambigüedad.
  • A partir de Spring Framework 4.3, @Autowired no es necesario si un bean tiene un único constructor para inyectar dependencias.

Manejo de Scopes en la inyección de dependencias

Debes tener cuidado al inyectar un bean con un ámbito más reducido en uno con un ámbito más amplio (ej., prototype en singleton), ya que el comportamiento podría no ser el esperado. Inyectar un bean de scope request o session en un singleton causará una UnsatisfiedDependencyException, ya que el objeto request no estará activo.

En estos casos, se puede usar un proxy del bean. Esto se logra configurando el elemento proxyMode de la annotation @Scope con el valor ScopedProxyMode.TARGET_CLASS. Las annotations @RequestScope y @SessionScope lo configuran automáticamente.

Inyección de Valores: Personalizando tu aplicación

Además de inyectar beans, Spring Boot permite inyectar valores específicos leídos desde archivos de propiedades. Esto se hace con la annotation @Value.

  • @Value se utiliza en atributos de un bean, parámetros de un método setter o parámetros de constructores.
  • El elemento value de @Value indica el nombre de la propiedad a inyectar, usando Spring Expression Language (SpEL).
  • Por defecto, las propiedades se buscan en application.properties. Puedes especificar otros archivos de propiedades usando @PropertySource en una clase de configuración, con la ruta del archivo.

Clases de Configuración: La nueva forma de configurar Spring Boot

Antes de Spring Boot, gran parte de la configuración se realizaba mediante archivos XML. Con Spring Boot, es posible realizar estas configuraciones usando clases de configuración y annotations.

Una clase de configuración es una clase marcada con la annotation @Configuration. Dentro de ella, se definen métodos marcados con @Bean que se encargan de crear instancias de beans, configurarlos y devolverlos para que sean registrados en el Spring Container, aplicando así su configuración.


Preguntas Frecuentes sobre Spring Boot para Estudiantes

¿Cuál es la principal diferencia entre Spring Framework y Spring Boot?

Spring Framework es la base, un ecosistema completo para el desarrollo con Java. Spring Boot es un proyecto dentro de ese ecosistema que facilita y acelera el desarrollo de aplicaciones con Spring, reduciendo la configuración manual (especialmente XML) y proporcionando servidores embebidos y Starters para una experiencia “out-of-the-box” más rápida.

¿Por qué se dice que Spring Boot usa “Convention Over Configuration”?

Significa que Spring Boot viene con muchas configuraciones preestablecidas y decisiones sensatas por defecto, basadas en las dependencias que incluyes. Esto reduce la cantidad de configuración que tú, como desarrollador, tienes que escribir, permitiéndote enfocarte más en la lógica de negocio de tu aplicación en lugar de en la configuración boilerplate.

¿Qué son los Spring Boot Starters y para qué sirven?

Los Spring Boot Starters son un conjunto de descriptores de dependencias convenientes que puedes incluir en tu archivo pom.xml (Maven) o build.gradle (Gradle). Simplifican la gestión de dependencias al agrupar un conjunto común de tecnologías con versiones compatibles. Por ejemplo, spring-boot-starter-web incluye todo lo necesario para construir aplicaciones web, incluyendo Tomcat embebido y Spring MVC, sin que tengas que añadir cada dependencia individualmente.

¿Cómo Spring Boot maneja el servidor web y el despliegue de aplicaciones?

Spring Boot incorpora servidores web embebidos como Tomcat, Jetty o Undertow directamente en la aplicación. Esto significa que puedes empaquetar tu aplicación como un archivo JAR ejecutable y simplemente ejecutarlo con java -jar tu-app.jar. No necesitas desplegar tu aplicación en un servidor de aplicaciones externo, aunque sigue siendo una opción.

¿Qué es la Inyección de Dependencias y por qué es importante en Spring Boot?

La Inyección de Dependencias (DI) es un patrón de diseño donde el Spring Container se encarga de proporcionar las instancias de los objetos (beans) que una clase necesita, en lugar de que la clase los cree por sí misma. Esto es crucial porque fomenta el bajo acoplamiento entre componentes, facilita la prueba de unidades y mejora la modularidad y mantenibilidad del código. En Spring Boot, se logra fácilmente con annotations como @Autowired.

Materiales de estudio para este tema

Resumen

Un resumen claro de la información clave

Test de conocimientos

Pon a prueba tus conocimientos del tema

Tarjetas

Practica los conceptos clave con tarjetas

Podcast

Escucha un análisis en audio del tema

Mapa mental

Un resumen visual de la estructura del tema

En esta página

¿Qué es Spring Framework y cómo evolucionó Spring Boot?
La esencia de Spring Boot: Desarrollo Simplificado
Creando tu primer proyecto con Spring Initializr
Estructura típica de un proyecto Spring Boot Web
Gestión de dependencias con Maven y Spring Boot Starters
Spring Web MVC: Arquitectura para aplicaciones web
Spring Container y Spring Beans: El corazón de Spring
Cómo construir Spring Beans: Requisitos de Constructores
Component Scanning: Detección automática de beans
Ámbito de los Spring Beans: Controlando su ciclo de vida
Ciclo de vida de los Beans: Comportamiento en la creación y destrucción
Inyección de Dependencias: Desacoplamiento y eficiencia
Manejo de Scopes en la inyección de dependencias
Inyección de Valores: Personalizando tu aplicación
Clases de Configuración: La nueva forma de configurar Spring Boot
Preguntas Frecuentes sobre Spring Boot para Estudiantes
¿Cuál es la principal diferencia entre Spring Framework y Spring Boot?
¿Por qué se dice que Spring Boot usa “Convention Over Configuration”?
¿Qué son los Spring Boot Starters y para qué sirven?
¿Cómo Spring Boot maneja el servidor web y el despliegue de aplicaciones?
¿Qué es la Inyección de Dependencias y por qué es importante en Spring Boot?

Materiales de estudio

ResumenTest de conocimientosTarjetasPodcastMapa mental

Temas relacionados

Ejercicios Fundamentales de ProgramaciónFundamentos de Internet y RedesSupercomputadoras: Conceptos, Ranking y FuturoIntroducción a los Sistemas Operativos y Windows 7Fundamentos de Sistemas InformáticosConceptos Fundamentales de Datos e InformaciónArquitectura de Computadoras: Memoria y Placa BaseUnidad Central de Procesamiento (CPU) y sus ComponentesHistoria de las ComputadorasIntroducción a la Inteligencia Artificial