Saltar al contenido principal

MÓDULO 5 - Spring Core: IoC y DI Avanzado

¡Bienvenido al Módulo 5! 🎯​

Ha utilizado la inyección de dependencias en los módulos anteriores, pero ¿realmente entiende cómo funciona?

Este módulo le revela los secretos internos de Spring y le hace autónomo para gestionar cualquier situación de inyección de dependencias.


🎓 Objetivos de Aprendizaje​

Al final de este módulo, usted será capaz de:

  1. ✅ Explicar qué es la Inversión de Control (IoC)
  2. ✅ Dominar los 3 tipos de inyección de dependencias
  3. ✅ Crear y gestionar Beans de Spring
  4. ✅ Utilizar los ámbitos apropiados (@Singleton, @Prototype, etc.)
  5. ✅ Configurar Spring con @Configuration y @Bean
  6. ✅ Gestionar los perfiles (dev, test, prod)

📚 Prerrequisitos​

Antes de comenzar este módulo, debe haber:

  • ✅ Completado los Módulos 1 a 4
  • ✅ Utilizado la inyección por constructor en sus trabajos prácticos
  • ✅ Comprendido la arquitectura de 3 capas (Controller, Service, Repository)

¡Si estos prerrequisitos no están adquiridos, regrese a los módulos anteriores!


🗺️ Plan del Módulo​

Parte Teórica (4 capítulos)​

Capítulo 1: Inversión de Control (IoC)​

Duración: 30 minutos

Contenido:

  • ¿Qué es IoC?
  • El problema del acoplamiento fuerte
  • Cómo Spring resuelve este problema
  • El Contenedor Spring (ApplicationContext)

¿Por qué es importante? Comprender el principio fundamental de Spring


Capítulo 2: Inyección de Dependencias (DI)​

Duración: 45 minutos

Contenido:

  • Los 3 tipos de inyección (constructor, setter, field)
  • Por qué se prefiere la inyección por constructor
  • @Autowired, @Inject, @Resource
  • Dependencias opcionales

¿Por qué es importante? Elegir el método de inyección adecuado


Capítulo 3: Beans y Contexto Spring​

Duración: 45 minutos

Contenido:

  • ¿Qué es un Bean?
  • @Component, @Service, @Repository, @Controller
  • @Bean y @Configuration
  • Nomenclatura de beans
  • @Qualifier y @Primary

¿Por qué es importante? Dominar la creación y gestión de objetos Spring


Capítulo 4: Ámbitos y Configuración​

Duración: 45 minutos

Contenido:

  • Ámbitos: @Singleton, @Prototype
  • Ámbitos web: @RequestScope, @SessionScope
  • Configuración Java vs XML
  • Perfiles (@Profile) para dev/test/prod
  • @ComponentScan

¿Por qué es importante? Controlar el ciclo de vida y la configuración


Parte Práctica (3 TPs)​

TP5.1: Inyección de Dependencias Avanzada​

Duración: 1h30

Objetivo: Dominar los diferentes tipos de inyección

Usted va a crear:

  • Varios servicios con diferentes métodos de inyección
  • Gestionar dependencias circulares
  • Utilizar @Qualifier para elegir la implementación

TP5.2: Beans y Ámbitos​

Duración: 1h30

Objetivo: Comprender los ámbitos y su impacto

Usted va a crear:

  • Beans con diferentes ámbitos
  • Probar @Singleton vs @Prototype
  • Crear beans personalizados con @Bean

TP5.3: Configuración por Perfiles​

Duración: 1h30

Objetivo: Gestionar múltiples entornos

Usted va a crear:

  • Configuración para dev, test, prod
  • Beans condicionales según el perfil
  • application-{profile}.properties

📊 Duración Total​

TipoDuración
Teoría2h45 (4 capítulos)
Práctica4h30 (3 TPs)
Total7h15 (~2-3 sesiones)

🎯 Lo Que Va a Comprender​

Antes de este Módulo​

// Usted escribía esto sin realmente entender:
@Service
public class MyService {
private final MyRepository repo;

public MyService(MyRepository repo) {
this.repo = repo;
}
}

Preguntas sin respuesta:

  • ¿Por qué @Service?
  • ¿Cómo sabe Spring que debe crear MyRepository?
  • ¿Por qué inyección por constructor?
  • ¿Cuándo se crean estos objetos?

Después de este Módulo​

// Usted comprenderá TODO:
@Service // ← Spring gestiona este bean (singleton por defecto)
public class MyService {
private final MyRepository repo; // ← Inmutable (buena práctica)

// ← Inyección por constructor (recomendado)
public MyService(MyRepository repo) {
this.repo = repo; // ← Spring inyecta automáticamente
}
}

Usted sabrá:

  • ✅ Cómo Spring crea y gestiona los objetos
  • ✅ Cuándo usar @Component, @Service, @Repository
  • ✅ Cómo gestionar varias implementaciones
  • ✅ Cómo configurar para diferentes entornos
  • ✅ Los diferentes ámbitos y su utilidad

🚀 Por Qué Este Módulo Es Importante​

1. Comprender los Fundamentos​

Spring Boot "oculta" mucha complejidad con su auto-configuración. Es bueno para empezar rápido, pero usted debe entender lo que sucede "bajo el capó".

Ejemplo concreto:

Error frecuente: "No qualifying bean of type X found"

Sin este módulo: 😰 Busca en StackOverflow
Con este módulo: 😎 Entiende y resuelve el problema en 2 minutos


2. Escribir Código Profesional​

Los desarrolladores junior copian código sin entender.
Los desarrolladores senior comprenden y adaptan según el contexto.

Este módulo le hace pasar de junior a senior en Spring Core.


3. Preparación para Entrevistas​

Las preguntas sobre IoC, DI y los beans de Spring son extremadamente frecuentes en entrevistas técnicas.

Preguntas típicas:

  • "Explique la Inversión de Control"
  • "¿Cuál es la diferencia entre @Component y @Bean?"
  • "¿Cuándo usar @Qualifier?"
  • "Explique los ámbitos de los beans"

¡Después de este módulo, tendrá todas las respuestas!


🗺️ Progresión en la Formación​

Módulo 1: Introducción Spring Boot
Módulo 2: Primeros Pasos (Initializr, Estructura, Config)
Módulo 3: Arquitectura 3 Capas
Módulo 4: Bases de Datos Producción

Módulo 5: ← USTED ESTÁ AQUÍ - Spring Core (IoC/DI)
Comprender los fundamentos

Módulo 6: Spring Data JPA Avanzado
Módulo 7+: Conceptos avanzados

Módulo 5 = ¡El momento en que realmente entiende Spring!


📖 Cómo Abordar Este Módulo​

Teoría ANTES de la Práctica​

  1. Lea los 4 capítulos teóricos en orden

    • No salte ningún capítulo
    • Tome notas
    • Pruebe los pequeños ejemplos
  2. Realice los TPs en orden

    • TP5.1: Inyección
    • TP5.2: Beans y Ámbitos
    • TP5.3: Configuración
  3. Revise el resumen de cada capítulo


Tiempo Recomendado​

Opción Intensiva (1 fin de semana):

  • Sábado por la mañana: Capítulos 1 y 2 + TP5.1
  • Sábado por la tarde: Capítulo 3 + TP5.2
  • Domingo por la mañana: Capítulo 4 + TP5.3
  • Domingo por la tarde: Revisión y ejercicios

Opción Progresiva (2 sesiones):

  • Sesión 1: Capítulos 1-2 + TP1
  • Sesión 2: Capítulos 3-4 + TP5.2 y TP5.3

✅ Autoevaluación​

Antes de comenzar, responda:

  1. ¿Sabe qué significa IoC? ☐ Sí ☐ No
  2. ¿Conoce los 3 tipos de inyección? ☐ Sí ☐ No
  3. ¿Comprende la diferencia entre @Component y @Bean? ☐ Sí ☐ No
  4. ¿Sabe qué es un ámbito de bean? ☐ Sí ☐ No

Si ha respondido "No" a una sola pregunta → ¡Este módulo es para usted!

Después del módulo, repita este test. ¡Deberá responder "Sí" a TODO!


🎯 Próximo Paso​

¿Listo para comprender Spring en profundidad?

➡️ Comenzar con el Capítulo 1: Inversión de Control


⬅️ Volver al Plan de Curso