Skip to content

eraldosb/example-java-maven

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

53 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🚀 User Management Application

Uma aplicação Java moderna para gerenciamento de usuários construída com Spring Boot, Maven e H2 Database.

📋 Funcionalidades

  • CRUD completo de usuários (Create, Read, Update, Delete)
  • 🔍 Busca avançada por nome, email e faixa etária
  • 🔄 Ativação/Desativação de usuários (soft delete)
  • 📊 Estatísticas de usuários (ativos, inativos, total)
  • 🛡️ Validação de dados com Bean Validation
  • 🗄️ Banco de dados H2 em memória
  • 🧪 Testes unitários e de integração completos
  • 📈 Cobertura de código com JaCoCo

🛠️ Tecnologias Utilizadas

  • Java 11
  • Spring Boot 2.7.0
  • Spring Data JPA
  • H2 Database
  • Maven
  • JUnit 4
  • Mockito
  • JaCoCo (cobertura de código)

🚀 Como Executar

Pré-requisitos

  • Java 11 ou superior
  • Maven 3.6 ou superior
  • Docker e Docker Compose (opcional)

Opção 1: Executando com Maven

  1. Clone o repositório:
git clone <url-do-repositorio>
cd example-java-maven
  1. Compile e execute:
mvn clean install
mvn spring-boot:run
  1. Acesse a aplicação:

Opção 2: Executando com Docker 🐳

  1. Clone o repositório:
git clone <url-do-repositorio>
cd example-java-maven
  1. Execute com Docker Compose (recomendado):
# Build e execução automática
./docker-run.sh

# Ou manualmente:
mvn clean package -DskipTests
docker-compose up -d
  1. Verificar status:
docker-compose ps
  1. Acessar logs:
docker-compose logs -f
  1. Parar a aplicação:
docker-compose down
  1. Acesse a aplicação:

📚 Endpoints da API

Usuários

Método Endpoint Descrição
POST /api/users Criar novo usuário
GET /api/users Listar todos os usuários
GET /api/users/{id} Buscar usuário por ID
GET /api/users/email/{email} Buscar usuário por email
PUT /api/users/{id} Atualizar usuário
PATCH /api/users/{id}/activate Ativar usuário
PATCH /api/users/{id}/deactivate Desativar usuário
DELETE /api/users/{id} Deletar usuário permanentemente

Busca e Filtros

Método Endpoint Descrição
GET /api/users/active Listar usuários ativos
GET /api/users/search?name={name} Buscar usuários por nome
GET /api/users/age-range?minAge={min}&maxAge={max} Buscar por faixa etária
GET /api/users/stats Estatísticas dos usuários

📝 Exemplos de Uso

Criar um usuário

curl -X POST http://localhost:8080/api/users \
  -H "Content-Type: application/json" \
  -d '{
    "name": "João Silva",
    "email": "joao@email.com",
    "phone": "11999999999",
    "age": 30
  }'

Buscar todos os usuários

curl http://localhost:8080/api/users

Buscar usuário por ID

curl http://localhost:8080/api/users/1

Atualizar usuário

curl -X PUT http://localhost:8080/api/users/1 \
  -H "Content-Type: application/json" \
  -d '{
    "name": "João Santos",
    "email": "joao@email.com",
    "phone": "11888888888",
    "age": 31
  }'

🧪 Executando os Testes

# Executar todos os testes
mvn test

# Executar testes com relatório de cobertura
mvn clean test jacoco:report

# Ver relatório de cobertura
open target/site/jacoco/index.html

📊 Estrutura do Projeto

src/
├── main/
│   ├── java/com/example/usermanagement/
│   │   ├── UserManagementApplication.java    # Classe principal
│   │   ├── controller/
│   │   │   └── UserController.java           # Controller REST
│   │   ├── service/
│   │   │   └── UserService.java              # Lógica de negócio
│   │   ├── repository/
│   │   │   └── UserRepository.java           # Acesso a dados
│   │   └── model/
│   │       └── User.java                     # Entidade JPA
│   └── resources/
│       └── application.properties            # Configurações
└── test/
    └── java/com/example/usermanagement/
        ├── UserManagementApplicationTest.java # Testes de integração
        ├── service/
        │   └── UserServiceTest.java          # Testes unitários do service
        └── controller/
            └── UserControllerTest.java       # Testes unitários do controller

## 🐳 Docker

### Arquivos Docker
- `Dockerfile` - Configuração da imagem Docker
- `docker-compose.yml` - Orquestração dos containers
- `.dockerignore` - Arquivos ignorados no build
- `docker-run.sh` - Script automatizado para build e execução

### Comandos Docker Úteis

```bash
# Build da imagem
docker build -t user-management-app .

# Executar container
docker run -p 8080:8080 user-management-app

# Ver logs do container
docker-compose logs -f

# Parar todos os containers
docker-compose down

# Remover volumes e imagens
docker-compose down -v --rmi all

🔧 Configurações

As configurações da aplicação estão no arquivo application.properties:

  • Porta: 8080
  • Banco de dados: H2 em memória
  • Console H2: Habilitado em /h2-console
  • Logs: Configurados para DEBUG

📈 Cobertura de Código

O projeto utiliza JaCoCo para análise de cobertura de código:

mvn clean test jacoco:report

O relatório será gerado em target/site/jacoco/index.html

🤝 Contribuindo

  1. Faça um fork do projeto
  2. Crie uma branch para sua feature (git checkout -b feature/AmazingFeature)
  3. Commit suas mudanças (git commit -m 'Add some AmazingFeature')
  4. Push para a branch (git push origin feature/AmazingFeature)
  5. Abra um Pull Request

📄 Licença

Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.

👨‍💻 Autor

Desenvolvido com ❤️ usando Spring Boot e Java.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 40.5%
  • Java 30.4%
  • HTML 14.3%
  • Shell 7.5%
  • JavaScript 6.6%
  • CSS 0.4%
  • Dockerfile 0.3%