Este projeto é uma aplicação RESTful que simula operações bancárias, como cadastro de clientes, transferência entre contas e consulta de histórico de transferências. Utiliza Spring Boot, Redis como banco de dados em memória, controle de concorrência nas transferências e implementa testes de mutação com PIT e testes unitários/integrados com JUnit 5.
Cadastro de Clientes
- Endpoint para cadastrar um cliente com ID, nome, número da conta (único) e saldo inicial.
Listagem de Clientes
- Endpoint para listar todos os clientes cadastrados.
Busca de Cliente por Número da Conta
- Endpoint para buscar detalhes de um cliente utilizando o número da conta.
Transferência entre Contas
- Endpoint para realizar transferências entre duas contas, com controle de saldo e limite de R$ 10.000,00.
Histórico de Transferências
- Endpoint para consultar o histórico de transferências de uma conta, incluindo transferências bem-sucedidas e malsucedidas, ordenadas por data decrescente.
- Java 21
- Spring Boot 3.3.4
- Redis (via RedisTemplate)
- JUnit 5 para testes unitários e de integração
- PIT para testes de mutação
- Springdoc OpenAPI (Swagger)
Certifique-se de ter as seguintes ferramentas instaladas:
- Java 21
- Maven 3.8+
- Redis em execução local (WSL no Windows)
- Git
Clonar o Repositório
git clone https://github.com/matheus-dev1/apitransferencia.git
cd apitransferencia
O Redis não possui no windows de forma nativa, você precisa usar um WSL, então, segue os comando para baixar.
Habilitar WSL
wsl --install
Instalar distrinuição Linux
Recomento o Ubuntu, que pode ser encontrado na Microsoft Store e pode ser baixado facilmente.
Instalar o Redis
sudo apt update
sudo apt install redis-server
sudo systemctl enable redis-server
sudo systemctl start redis-server
Iniciar o Redis
redis-server
Iniciar o Redis com porta alternativa
redis-server --port 6380
Para compilar e executar a aplicação, utilize os seguintes comandos
mvn clean install
java -jar .\target\apitranferencia-0.0.1-SNAPSHOT.war
A aplicação estará disponível em http://localhost:8080
Collection esta na raiz do projeto ./collection.postman_collection.json
Para executar os testes unitários com o JUnit 5, use o comando
mvn test
Para rodar os testes de mutação com o PIT, use o comando
mvn pitest:mutationCoverage
Os relatórios de mutação estarão disponíveis no diretório target/pit-reports/.
Cadastro de Clientes: POST /api/v1/clientes
Body:
{
"id": "1",
"nome": "Matheus Silva",
"numeroConta": "123456",
"saldo": 5000.0
}
Listagem de Clientes: GET /api/v1/clientes
Busca de Cliente por Conta: GET /api/v1/clientes/{numeroConta}
Transferência entre Contas: POST /api/v1/transferencias
Body:
{
"contaOrigem": "123456",
"contaDestino": "654321",
"valor": 1500.0
}
Acesse http://localhost:8080/swagger-ui.html
depois de compilar o projeto.
src/main/java:
Código da aplicaçãosrc/main/resources:
Configurações de recursos (e.g., application.properties)src/test/java:
Testes unitários e de integraçãotarget/:
Diretório gerado durante a compilação, contém arquivos .class e relatórios