Pular para o conteúdo principal

MÓDULO 2 - Primeiros Passos com Spring Boot

Objetivos do Módulo​

Este módulo permitirá que você:

  • Domine o uso do Spring Initializr para criar projetos
  • Compreenda a estrutura de um projeto Spring Boot
  • Configure seu ambiente de desenvolvimento (Visual Studio Code)
  • Crie sua primeira aplicação REST
  • Utilize as anotações básicas do Spring Boot

Conteúdo do Módulo​

Teoria​

Capítulo 1: Spring Initializr​

  • O que é o Spring Initializr
  • Configuração do projeto (Maven, Java, Spring Boot)
  • Metadados e parâmetros
  • Gerenciamento de dependências e starters
  • Geração e importação do projeto
  • Alternativas (CLI, API, IDE)

Capítulo 2: Estrutura de um Projeto Spring Boot​

  • Estrutura completa de um projeto
  • Papel do arquivo pom.xml
  • Organização dos pacotes (Controller, Service, Repository, Model)
  • Diretórios resources (static, templates)
  • Configuração com application.properties/yml
  • Convenções de nomenclatura

Capítulo 3: Configuração​

  • Arquivos application.properties e application.yml
  • Propriedades comuns do Spring Boot
  • Configuração do banco de dados
  • Configuração de logs
  • Propriedades personalizadas com @Value e @ConfigurationProperties
  • Gerenciamento de profiles (dev, test, prod)
  • Variáveis de ambiente e segurança

Capítulo 4: Anotações Básicas​

  • @SpringBootApplication e seus componentes
  • Anotações de estereótipo: @Component, @Service, @Repository
  • @RestController vs @Controller
  • Anotações de mapeamento HTTP: @GetMapping, @PostMapping, @PutMapping, @DeleteMapping
  • @RequestParam, @PathVariable, @RequestBody
  • Injeção de dependências com @Autowired

Capítulo 5: Introdução aos Repositories​

  • O que é um Repository Spring Data JPA
  • Os 4 métodos básicos herdados de JpaRepository
  • Convenções de nomenclatura simples: findBy, And, Or
  • Criar uma entidade JPA
  • Arquitetura completa Controller → Service → Repository
  • Exemplos práticos com a entidade User
  • Nota: Conteúdo simplificado para iniciantes. Os conceitos avançados (joins, JPQL, @Query) serão vistos no Módulo 6

Práticas​

TP2.1: Aplicação Greeting com VS Code​

Objetivo: Criar sua primeira aplicação Spring Boot REST

Conteúdo:

  • Configuração do Spring Initializr
  • Importação do projeto no Visual Studio Code
  • Criação de um controlador REST simples
  • Teste e depuração
  • Resolução de problemas comuns

Duração estimada: 2-3 horas

Pré-requisitos: JDK 17+, Maven, VS Code com extensões Java

Nível: Iniciante


TP2.2: Banco de Dados H2 - Memória e Persistência​

Objetivo: Dominar o H2 em modo memória e modo arquivo persistente

Conteúdo:

  • Parte 1: H2 em memória (dados temporários)
  • Parte 2: H2 persistente (dados em disco)
  • Parte 3: Gerenciamento avançado com renomeação de arquivos
  • Diferenças entre os modos
  • Configuração de schema.sql e data.sql
  • Console H2
  • 4 exercícios práticos
  • Uso dos 4 métodos JPA básicos (findById, findAll, save, deleteById)

Duração estimada: 3-4 horas

Pré-requisitos: TP2.1 concluído, Capítulo 5 (Repositories) lido

Nível: Iniciante


📚 Nota Importante: Reestruturação Pedagógica​

Onde estão TP3 e TP4?​

Se você está procurando os TPs avançados, eles foram movidos para os módulos apropriados para uma melhor progressão pedagógica:

TP3.1: Arquitetura CRUD → MÓDULO 3​

  • Novo nome: TP3.1 do Módulo 3
  • Motivo: Utiliza conceitos avançados (Validação, ResponseEntity, Tratamento de erros)
  • Pré-requisitos adicionados:
    • Capítulo 1: Service Layer em detalhes
    • Capítulo 2: Validação de dados
    • Capítulo 3: Tratamento de erros HTTP
    • Capítulo 4: Arquitetura 3 camadas profissional

TP4.1: PostgreSQL → MÓDULO 4​

  • Novo nome: TP4.1 do Módulo 4
  • Motivo: Utiliza conceitos de produção (PostgreSQL, Lombok, Jakarta, estratégias DDL)
  • Pré-requisitos adicionados:
    • Capítulo 1: PostgreSQL - Instalação e configuração
    • Capítulo 2: Jakarta vs Javax Persistence
    • Capítulo 3: Hibernate e estratégias DDL
    • Capítulo 4: Lombok

Por que essa mudança?​

Análise pedagógica:

TP3 (anteriormente aqui): 60% de conceitos não ensinados
TP4 (anteriormente aqui): 80% de conceitos não ensinados

Impacto positivo:

  • ✅ Cada TP agora tem TODA a teoria necessária ANTES de começar
  • ✅ Menos frustração e confusão
  • ✅ Aprendizado mais progressivo e eficaz
  • ✅ Melhor preparação para produção

Progressão Recomendada​

MÓDULO 2 (Fundamentos)
├── 5 Capítulos teóricos
└── 2 TPs práticos (TP2.1, TP2.2)
↓
MÓDULO 3 (Arquitetura Robusta)
├── 4 Capítulos teóricos
└── 1 TP (Arquitetura CRUD) ← Antigo TP3 do Módulo 2
↓
MÓDULO 4 (Produção)
├── 4 Capítulos teóricos
└── 1 TP (PostgreSQL) ← Antigo TP4 do Módulo 2

Pré-requisitos Técnicos​

Antes de começar este módulo, certifique-se de ter:

Softwares Necessários​

  1. JDK 17 ou superior

  2. Visual Studio Code

  3. Extensões VS Code:

    • Extension Pack for Java (Microsoft)
    • Spring Boot Extension Pack (VMware)
    • Maven for Java (Microsoft)
  4. Maven 3.9+

Verificação da Instalação​

# Verificar Java
java -version

# Verificar Maven
mvn -version

Duração Estimada​

Teoria: 6-8 horas (5 capítulos)
Prática: 5-7 horas (TP2.1, TP2.2)
Total: 11-15 horas (2-3 sessões de 4-6 horas)

Nota: O Módulo 2 foi simplificado para focar nos fundamentos. Os TPs avançados (Arquitetura CRUD, PostgreSQL) agora estão nos Módulos 3 e 4 com a teoria apropriada.


Recursos Adicionais​

Documentação Oficial​

Tutoriais Recomendados​


Critérios de Sucesso​

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

  • ✅ Criar um projeto Spring Boot com o Spring Initializr
  • ✅ Configurar o Visual Studio Code para desenvolvimento Java/Spring
  • ✅ Criar e testar um controlador REST simples
  • ✅ Compreender a estrutura de um projeto Spring Boot
  • ✅ Configurar application.properties e application.yml
  • ✅ Utilizar as anotações básicas (@RestController, @Service, @Repository)
  • ✅ Criar entidades JPA simples
  • ✅ Utilizar os 4 métodos CRUD básicos (findById, findAll, save, deleteById)
  • ✅ Criar métodos de busca simples (findBy, And, Or)
  • ✅ Trabalhar com H2 em modo memória e persistente

O que você AINDA NÃO precisa dominar (isso está nos próximos módulos):

  • ❌ Arquitetura 3 camadas completa (Módulo 3)
  • ❌ Validação avançada (Módulo 3)
  • ❌ Tratamento de erros HTTP (Módulo 3)
  • ❌ PostgreSQL em produção (Módulo 4)
  • ❌ Lombok (Módulo 4)
  • ❌ Joins JPA (Módulo 6)

Próximos Passos​

Após concluir este módulo, você estará pronto para:

  • Módulo 3: Arquitetura em Camadas e CRUD Completo

    • Service Layer aprofundado
    • Validação de dados (@Valid, @NotNull, @Size, etc.)
    • Tratamento de erros HTTP (ResponseEntity, códigos de status)
    • Arquitetura 3 camadas profissional
    • TP3.1: Arquitetura CRUD (movido para melhor progressão)
  • Módulo 4: Bancos de Dados em Produção

    • PostgreSQL - Instalação e configuração
    • Jakarta vs Javax Persistence
    • Hibernate e estratégias DDL
    • Lombok para reduzir código
    • TP4.1: Migração PostgreSQL (movido para melhor progressão)
  • Módulo 5: Spring Core - IoC e DI avançado

  • Módulo 6: Spring Data JPA Avançado (Joins, JPQL, Otimização)

📚 Por que essa reorganização?​

Estrutura antiga:

  • Módulo 2 continha 4 TPs, sendo 2 muito avançados
  • TP3.1 e TP4.1 utilizavam conceitos não ensinados
  • Frustração dos alunos

Nova estrutura:

  • ✅ Módulo 2: Apenas fundamentos (TP2.1, TP2.2)
  • ✅ Módulo 3: CRUD com teoria completa (TP3.1)
  • ✅ Módulo 4: Produção com teoria completa (TP4.1)

💡 Resultado: Cada TP agora tem TODA a teoria necessária ANTES de começar!


Comece pelo TP2.1