Fase 4 – Frameworks e Aplicações Web (3–4 meses)
Spring Boot, Spring Core e Spring Data JPA
- Spring Core: Injeção de dependência (
@Bean,@Autowired), contêiner IoC. - Spring Boot: Autoconfiguração, starters (
spring-boot-starter-web,spring-boot-starter-data-jpa),application.yml. - Spring Data JPA: Repositórios (
CrudRepository,JpaRepository), consultas com@Query, paginação. - Exemplo: Criar endpoints REST para gerenciar tarefas (CRUD) em um app de tarefas.
Spring Security (JWT, OAuth2)
- Conceitos: autenticação, autorização, filtros de segurança.
- JWT: criar e validar tokens, usar
JwtAuthenticationFilter. - OAuth2: configurar Resource Server, integrar com provedor (ex.: Google).
- Exemplo: proteger endpoints de tarefas com JWT e papéis (
ADMIN,USER).
Testes Unitários e de Integração
- Unitários: JUnit 5, Mockito (
@Mock,@InjectMocks), testar lógica de negócio. - Integração:
@SpringBootTest,@WebMvcTest, banco H2 para testes. - Testcontainers: testar com PostgreSQL em contêineres Docker.
- Exemplo: testar serviços e endpoints do app de tarefas.
APIs RESTful e Documentação com Swagger
- REST: métodos HTTP, códigos de status, princípios RESTful.
- Spring REST:
@RestController,@RequestMapping,@PathVariable. - Swagger: configurar springdoc-openapi, anotar com
@Operation. - Exemplo: documentar endpoints do app de tarefas com Swagger UI.
Introdução ao GraphQL
- Conceitos: queries, mutations, schema.
- Spring Boot com GraphQL: configuração com spring-boot-starter-graphql.
- Exemplo: criar uma query GraphQL para listar tarefas por status.
Integração Básica com Frontend
- Thymeleaf: templates para renderizar páginas HTML com Spring Boot.
- Exemplo: criar uma interface web simples para visualizar e criar tarefas.
Ferramentas de Build: Maven e Gradle
- Maven: estrutura do
pom.xml, dependências, plugins. - Gradle: arquivo
build.gradle, tarefas, gerenciamento de dependências. - Exemplo: configurar o app de tarefas com Maven e Gradle.
Deploy de Projeto
- Plataformas: Railway, Heroku, AWS (Elastic Beanstalk).
- Passos: empacotar como JAR, configurar CI/CD com GitHub Actions.
- Exemplo: fazer deploy do app de tarefas no Railway com PostgreSQL.
Projeto Final
Sistema de Gerenciamento de Tarefas
- Banco: tabelas Task (título, descrição, status) e User (relacionamento 1:N).
- Java: API REST com Spring Boot, Spring Data JPA para CRUD.
- Segurança: autenticação JWT, papéis (ADMIN, USER).
- Testes: unitários (serviços) e integração (endpoints com Testcontainers).
- Documentação: Swagger UI com descrição de endpoints.
- Opcional: adicionar uma query GraphQL para listar tarefas e uma interface Thymeleaf para interação.
- Git: commits por funcionalidade (ex.: feature/rest-api, feature/security).
- Publicar: no GitHub com README (setup, endpoints, deploy).