Pular para o conteúdo principal

MÓDULO 5 - Spring Core: IoC e DI Avançado

Bem-vindo ao Módulo 5! 🎯​

Você já utilizou injeção de dependências nos módulos anteriores, mas você realmente entende como isso funciona?

Este módulo revela os segredos internos do Spring e torna você autônomo para lidar com qualquer situação de injeção de dependências.


🎓 Objetivos de Aprendizagem​

Ao final deste módulo, você será capaz de:

  1. ✅ Explicar o que é Inversão de Controle (IoC)
  2. ✅ Dominar os 3 tipos de injeção de dependências
  3. ✅ Criar e gerenciar Beans Spring
  4. ✅ Utilizar os escopos apropriados (@Singleton, @Prototype, etc.)
  5. ✅ Configurar o Spring com @Configuration e @Bean
  6. ✅ Gerenciar perfis (dev, test, prod)

📚 Pré-requisitos​

Antes de começar este módulo, você deve ter:

  • ✅ Completado os Módulos 1 a 4
  • ✅ Utilizado a injeção por construtor nos seus exercícios práticos
  • ✅ Compreendido a arquitetura em 3 camadas (Controller, Service, Repository)

Se esses pré-requisitos não foram cumpridos, volte aos módulos anteriores!


🗺️ Plano do Módulo​

Parte Teórica (4 capítulos)​

Capítulo 1: Inversão de Controle (IoC)​

Duração: 30 minutos

Conteúdo:

  • O que é IoC?
  • O problema do alto acoplamento
  • Como o Spring resolve esse problema
  • O Container Spring (ApplicationContext)

Por que é importante? Entender o princípio fundamental do Spring


Capítulo 2: Injeção de Dependências (DI)​

Duração: 45 minutos

Conteúdo:

  • Os 3 tipos de injeção (construtor, setter, field)
  • Por que a injeção por construtor é preferida
  • @Autowired, @Inject, @Resource
  • Dependências opcionais

Por que é importante? Escolher o método de injeção correto


Capítulo 3: Beans e Contexto Spring​

Duração: 45 minutos

Conteúdo:

  • O que é um Bean?
  • @Component, @Service, @Repository, @Controller
  • @Bean e @Configuration
  • Nomeação de beans
  • @Qualifier e @Primary

Por que é importante? Dominar a criação e o gerenciamento de objetos Spring


Capítulo 4: Escopos e Configuração​

Duração: 45 minutos

Conteúdo:

  • Escopos: @Singleton, @Prototype
  • Escopos web: @RequestScope, @SessionScope
  • Configuração Java vs XML
  • Perfis (@Profile) para dev/test/prod
  • @ComponentScan

Por que é importante? Controlar o ciclo de vida e a configuração


Parte Prática (3 TPs)​

TP5.1: Injeção de Dependências Avançada​

Duração: 1h30

Objetivo: Dominar os diferentes tipos de injeção

Você irá criar:

  • Vários serviços com diferentes métodos de injeção
  • Gerenciar dependências circulares
  • Utilizar @Qualifier para escolher a implementação

TP5.2: Beans e Escopos​

Duração: 1h30

Objetivo: Compreender os escopos e seu impacto

Você irá criar:

  • Beans com diferentes escopos
  • Testar @Singleton vs @Prototype
  • Criar beans personalizados com @Bean

TP5.3: Configuração por Perfis​

Duração: 1h30

Objetivo: Gerenciar múltiplos ambientes

Você irá criar:

  • Configuração para dev, test, prod
  • Beans condicionais conforme o perfil
  • application-{profile}.properties

📊 Duração Total​

TipoDuração
Teoria2h45 (4 capítulos)
Prática4h30 (3 TPs)
Total7h15 (~2-3 sessões)

🎯 O Que Você Vai Compreender​

Antes deste Módulo​

// Você escrevia isso sem realmente entender:
@Service
public class MyService {
private final MyRepository repo;

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

Perguntas sem resposta:

  • Por que @Service?
  • Como o Spring sabe que deve criar MyRepository?
  • Por que injeção por construtor?
  • Quando esses objetos são criados?

Depois deste Módulo​

// Você vai entender TUDO:
@Service // ← Spring gerencia este bean (singleton por padrão)
public class MyService {
private final MyRepository repo; // ← Imutável (boa prática)

// ← Injeção por construtor (recomendado)
public MyService(MyRepository repo) {
this.repo = repo; // ← Spring injeta automaticamente
}
}

Você saberá:

  • ✅ Como o Spring cria e gerencia os objetos
  • ✅ Quando usar @Component, @Service, @Repository
  • ✅ Como gerenciar múltiplas implementações
  • ✅ Como configurar para diferentes ambientes
  • ✅ Os diferentes escopos e sua utilidade

🚀 Por Que Este Módulo É Importante​

1. Compreender os fundamentos​

O Spring Boot "esconde" muita complexidade com sua auto-configuração. Isso é ótimo para começar rápido, mas você precisa entender o que acontece "por baixo do capô".

Exemplo concreto:

Erro comum: "No qualifying bean of type X found"

Sem este módulo: 😰 Você procura no StackOverflow
Com este módulo: 😎 Você entende e resolve o problema em 2 minutos


2. Escrever Código Profissional​

Desenvolvedores juniores copiam código sem entender.
Desenvolvedores seniores entendem e adaptam conforme o contexto.

Este módulo faz você evoluir de júnior para sênior em Spring Core.


3. Preparação para Entrevistas​

Perguntas sobre IoC, DI e beans Spring são extremamente frequentes em entrevistas técnicas.

Perguntas típicas:

  • "Explique Inversão de Controle"
  • "Qual a diferença entre @Component e @Bean?"
  • "Quando usar @Qualifier?"
  • "Explique os escopos dos beans"

Após este módulo, você terá todas as respostas!


🗺️ Progressão na Formação​

Módulo 1: Introdução ao Spring Boot
Módulo 2: Primeiros Passos (Initializr, Estrutura, Config)
Módulo 3: Arquitetura em 3 Camadas
Módulo 4: Bancos de Dados Produção

Módulo 5: ← VOCÊ ESTÁ AQUI - Spring Core (IoC/DI)
Compreender as fundações

Módulo 6: Spring Data JPA Avançado
Módulo 7+: Conceitos avançados

Módulo 5 = O momento em que você REALMENTE entende o Spring!


📖 Como Abordar Este Módulo​

Teoria ANTES da Prática​

  1. Leia os 4 capítulos teóricos na ordem

    • Não pule nenhum capítulo
    • Faça anotações
    • Teste os pequenos exemplos
  2. Faça os TPs na ordem

    • TP5.1: Injeção
    • TP5.2: Beans e Escopos
    • TP5.3: Configuração
  3. Revise o resumo de cada capítulo


Tempo Recomendado​

Opção Intensiva (1 final de semana):

  • Sábado de manhã: Capítulos 1 e 2 + TP5.1
  • Sábado à tarde: Capítulo 3 + TP5.2
  • Domingo de manhã: Capítulo 4 + TP5.3
  • Domingo à tarde: Revisão e exercícios

Opção Progressiva (2 sessões):

  • Sessão 1: Capítulos 1-2 + TP1
  • Sessão 2: Capítulos 3-4 + TP5.2 e TP5.3

✅ Autoavaliação​

Antes de começar, responda:

  1. Você sabe o que significa IoC? ☐ Sim ☐ Não
  2. Você conhece os 3 tipos de injeção? ☐ Sim ☐ Não
  3. Você entende a diferença entre @Component e @Bean? ☐ Sim ☐ Não
  4. Você sabe o que é um escopo de bean? ☐ Sim ☐ Não

Se você respondeu "Não" a qualquer uma das perguntas → Este módulo é para você!

Após o módulo, refaça este teste. Você deverá responder "Sim" para TUDO!


🎯 Próximo Passo​

Pronto para entender Spring a fundo?

➡️ Comece pelo Capítulo 1: Inversão de Controle


⬅️ Voltar ao Plano de Curso