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
@SpringBootApplicatione seus componentes- Anotações de estereótipo:
@Component,@Service,@Repository @RestControllervs@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
-
JDK 17 ou superior
- Download: Oracle JDK ou OpenJDK
-
Visual Studio Code
- Download: code.visualstudio.com
-
Extensões VS Code:
- Extension Pack for Java (Microsoft)
- Spring Boot Extension Pack (VMware)
- Maven for Java (Microsoft)
-
Maven 3.9+
- Consulte o TP1.2 : Instalação do Maven 3.9.x para um guia completo de instalação no Windows, macOS e Linux
- Se o Java ainda não estiver instalado, consulte primeiro o TP1.1 : Instalação do Java JDK 17
- Versão 3.9+ recomendada para estabilidade com Java 17+
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!