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).