API REST para gerenciamento de usuários utilizando Spring Boot, JPA, Lombok e documentação Swagger.
- Java 17
- Spring Boot 3.5.9
- Spring Data JPA
- MySQL 8
- Lombok
- Springdoc OpenAPI 2.5.0
- Maven
- Criar usuário
- Buscar usuário por email
- Atualizar usuário por ID
- Deletar usuário por email
Arquitetura em camadas seguindo boas práticas:
src/main/java/com/edson/crud/usuario/
├── Application.java
├── config/
│ └── OpenApiConfig.java
├── controller/
│ └── UsuarioController.java
├── bussiness/
│ └── UsuarioService.java
├── dto/
│ ├── UsuarioRequestDTO.java
│ └── UsuarioResponseDTO.java
└── infrastruture/
├── entities/
│ └── Usuario.java
└── repository/
└── UsuarioRepository.java
Camadas:
- Controller: Endpoints REST, validações de entrada
- Service: Lógica de negócio e regras de domínio
- Repository: Acesso a dados via Spring Data JPA
- DTO: Objetos de transferência de dados
- Entity: Entidades JPA mapeadas para o banco
Ajuste as credenciais em application.properties:
spring.datasource.username=root
spring.datasource.password=8880O banco crud_usuario será criado automaticamente.
- Instale o plugin Lombok
- Habilite Annotation Processing:
- Settings → Compiler → Annotation Processors → Enable annotation processing
- Reimporte o projeto Maven
./mvnw spring-boot:runOu execute a classe Application.java no IntelliJ.
Swagger UI: http://localhost:8080/swagger-ui.html
POST /usuario - Criar usuário
{
"nome": "João Silva",
"email": "joao@exemplo.com"
}GET /usuario?email={email} - Buscar por email
PUT /usuario/{id} - Atualizar usuário
{
"nome": "João da Silva",
"email": "joao.silva@exemplo.com"
}DELETE /usuario?email={email} - Deletar usuário
Reduz boilerplate com anotações:
@Data: getters, setters, toString, equals, hashCode@Builder: padrão builder@RequiredArgsConstructor: injeção de dependência via construtor
- Repositories com métodos derivados
- Transações com
@Transactional - Configuração
open-in-view=false
- Documentação automática de endpoints
- Interface interativa para testes
- Configuração via
OpenApiConfig
Edson Felix