Este projeto é uma API REST para o gerenciamento de uma livraria, desenvolvida em Java 21 com o framework Spring Boot 4.0.1.
A aplicação permite o registo, atualizar e consulta de livros, bem como o gerenciamento dos seus respetivos autores, utilizando uma arquitetura moderna, mapeamento de dados eficiente e um sistema de tratamento de erros especializado.
- Java 21
- Spring Boot 3.4.1
- Spring Web
- Spring Data JPA
- H2 Database (em memória)
- MapStruct 1.5.5.Final
- Lombok
- JUnit 5
- Mockito
- Java Faker
- Docker
A aplicação segue uma arquitetura em camadas, garantindo separação de responsabilidades, manutenibilidade e escalabilidade:
- Controller
- Exposição dos endpoints REST
- Validação de requests
- Service
- Regras de negócio
- Comunicação entre controller e repositório
- Repository
- Persistência de dados via Spring Data JPA
- DTO (Data Transfer Object)
- Abstração das entidades
- Proteção da camada de domínio
- Entity
- Representação das tabelas
BookeAuthor
- Representação das tabelas
- Mapper
- Conversão entre Entidades e DTOs usando MapStruct
- Exception Handler
- Tratamento global de exceções
- Respostas padronizadas para erros da API
src/main/java/com/example/bookstore
│
├── controller
├── dto
├── entity
├── exception
├── mapper
├── repository
└── servicePOST /api/v1/books
{
"name": "Spring Boot Practical Guide",
"pages": 350,
"chapters": 12,
"isbn": "0-596-52068-9",
"publisherName": "Tech Press",
"author": {
"name": "Thiago Prioto",
"age": 28
}
}Execução dos testes:
mvn testdocker build -t bookstore-manager .
docker run -p 8080:8080 bookstore-managergit clone https://github.com/Thiagoprioto/bookstore_manager.git
cd bookstore_manager
mvn spring-boot:runDesenvolvido por Thiago Prioto 🚀
MIT