Resumen de Introducción a Spring Boot
Introducción a Spring Boot: Guía Completa para Estudiantes
Introducción
El Spring Framework es un conjunto de herramientas para desarrollar aplicaciones empresariales en Java que facilita la gestión de dependencias, la inversión de control y la inyección de dependencias, la organización por capas y el desarrollo de aplicaciones web basadas en MVC. En este material verás los conceptos centrales del contenedor de Spring, los beans, el ciclo de vida y el patrón MVC aplicado con Spring Web MVC (sin entrar en detalles cubiertos por Spring Boot). Se incluyen ejemplos prácticos y comparaciones para facilitar el aprendizaje.
Definición: El Spring Framework es un framework ligero para Java que proporciona un contenedor IoC, soporte para inyección de dependencias, programación orientada a aspectos, manejo de transacciones y módulos para construir aplicaciones web, de datos y de integración.
1. Contenedor de Spring y Spring Beans
¿Qué es el Spring IoC Container?
- El Spring IoC Container (Inversion of Control) es el componente que crea, configura y gestiona la vida útil de los objetos (beans).
- Implementa el patrón de Inyección de Dependencias (DI) para suministrar dependencias a los objetos en lugar de que éstos las creen.
Definición: Un Spring Bean es un objeto gestionado por el contenedor de Spring, creado, configurado y administrado por éste durante el ciclo de vida de la aplicación.
Formas de declarar beans
- Mediante métodos anotados con @Bean dentro de una clase marcada con @Configuration.
- Mediante estereotipos sobre clases: @Component, @Repository, @Service, @Controller (o @RestController para controladores REST).
Reglas de construcción de beans
- Constructor por defecto (sin parámetros).
- Varios constructores y uno marcado con @Autowired que reciba beans.
- Un único constructor que reciba beans (desde Spring 4.3 no necesita @Autowired si es el único constructor).
Component Scanning
- Proceso que detecta automáticamente clases anotadas con estereotipos y las registra como beans.
- Se habilita con @ComponentScan en una clase de configuración ubicada en el paquete base.
Definición: Component Scanning es la búsqueda automática de clases anotadas con estereotipos y su registro como beans en el contenedor.
2. Ámbitos (Scopes) de los Spring Beans
- Los scopes definen el ciclo de vida y visibilidad de los beans.
| Scope | Descripción | Uso típico |
|---|---|---|
| singleton | Una única instancia compartida por toda la aplicación (por defecto) | Servicios de negocio sin estado |
| prototype | Nueva instancia cada vez que se solicita | Objetos con estado temporal |
| request | Una instancia por cada petición HTTP (web) | Componentes ligados a una solicitud web |
| session | Una instancia por sesión de usuario (web) | Datos por sesión de usuario |
| application | Una instancia para el ciclo del ServletContext | Recursos compartidos de la aplicación web |
| websocket | Una instancia por sesión WebSocket | Gestión de sesiones WebSocket |
- Se configura con @Scope o mediante atajos: @RequestScope, @SessionScope, @ApplicationScope.
Precauciones con ámbitos mixtos
- No inyectar directamente un bean de ámbito más reducido (por ejemplo prototype, request, session) en un bean singleton sin considerar proxies: el objeto de ámbito reducido puede no estar activo cuando se use y producir errores.
- Solución: usar proxy mediante @Scope(proxyMode = ScopedProxyMode.TARGET_CLASS) o usar @RequestScope/@SessionScope que ya activan el proxy.
3. Inyección de Dependencias
Concepto y ventajas
- La inyección de dependencias permite desacoplar componentes: el contenedor provee las instancias necesarias donde se requieran.
- Facilita pruebas unitarias y sustituir implementaciones sin cambiar el cliente.
Formas de inyectar
- Inyección por constructor (preferida para componentes inmutables y pruebas).
- Inyección por setter.
- Inyección por campo (atributo) con @Autowired.
Definici
¿Ya tienes cuenta? Iniciar sesión
Spring Framework - Conceptos clave
Klíčové pojmy: Spring IoC crea y gestiona beans, Declarar beans: @Bean, @Component, @Service, @Repository, @Controller, Component Scanning autodetecta beans con @ComponentScan, Scopes comunes: singleton, prototype, request, session, application, websocket, Preferir inyección por constructor para testabilidad, @Autowired inyecta; usar @Qualifier o @Primary si hay ambigüedad, Usar @PostConstruct y @PreDestroy para inicialización y limpieza, Spring Web MVC usa DispatcherServlet como Front Controller, HandlerMapping resuelve URLs; ViewResolver obtiene vistas, Evitar inyectar beans de ámbito reducido en singletons sin proxy, @Value inyecta propiedades desde archivos de configuración, No inyectar dependencias circulares; rediseñar si aparecen