Skip to content

Repository files navigation

java-challenge

Java 25 Spring Boot 3.5 Gradle 9 Docker License MIT

Descrição

API REST para cadastro e gerenciamento de livros.

Funcionalidades

  • Listar livros com paginação (page, size).
  • Buscar livro por ID.
  • Criar livro com validação de dados.
  • Atualizar livro existente.
  • Excluir livro por ID.

Stack e Decisões Técnicas

  • Java 25 — uso da versão mais recente para aproveitar recursos de performance: JEP 491 (Virtual Threads sem pinning) e JEP 450 (Compact Object Headers com menor uso de memória).
  • Spring Boot 3.5 — estabilidade e suporte moderno para APIs REST.
  • Gradle 9 — build rápido, configuração declarativa e compatibilidade com cache.
  • Spring Data JPA + H2 — persistência leve para protótipo com SQL acessível e testes rápidos.
  • MapStruct — mapeamento de DTOs com código gerado, evitando boilerplate.
  • SpringDoc OpenAPI 2.8.x — documentação automática das rotas e contratos.
  • JUnit 5 + Mockito — testes unitários e mocks para camada de serviço/controller.
  • Docker com multi-stage build e Layered JAR — imagem enxuta e build otimizado.
  • GitHub Actions — pipeline com etapa de testes obrigatória antes do build e push da imagem Docker.

Como Rodar

Pré-requisitos

  • Java 25 — necessário apenas para rodar via Gradle
  • Docker — necessário para rodar via Docker Compose

Instalação

git clone https://github.com/seu-usuario/java-challenge.git
cd java-challenge

Via Docker Compose

docker compose up -d

Via Gradle

./gradlew bootRun

Rodando os Testes

./gradlew test

Documentação da API

Disponível em http://localhost:8080/swagger-ui/index.html após subir a aplicação.

Método Endpoint Descrição Status de sucesso
GET /v1/books Lista paginada 200
GET /v1/books/{id} Busca por ID 200
POST /v1/books Cria livro 201
PUT /v1/books/{id} Atualiza livro 200
DELETE /v1/books/{id} Remove livro 204

Erros

Todas as respostas de erro seguem o formato:

{
  "status": 400,
  "message": "Descrição do erro"
}

Erros de validação (400 Bad Request) retornam os campos que falharam:

{
  "timestamp": "2026-04-24T00:11:42.019+00:00",
  "status": 400,
  "error": "Bad Request",
  "path": "/v1/books"
}

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages