Um sistema bancário digital desenvolvido em Spring Boot que implementa funcionalidades essenciais de uma carteira digital, incluindo criação de contas, depósitos, transferências e extratos com auditoria completa.
O JBank foi desenvolvido como parte de um curso avançado de Spring Boot, focando em conceitos fundamentais e práticas avançadas de desenvolvimento backend. O projeto demonstra a implementação de uma arquitetura robusta e escalável para sistemas financeiros.
- Gestão de Carteiras: Criação, consulta e exclusão de carteiras digitais
- Operações Financeiras: Depósitos e transferências entre carteiras
- Extratos Paginados: Consulta de histórico de transações com paginação
- Auditoria Completa: Rastreamento de todas as operações com logs detalhados
- Controle de Concorrência: Implementação de versionamento otimista para transações
- Validações Avançadas: Validação de dados com Hibernate Validator
- Java 21 - Linguagem de programação
- Spring Boot 3.5.5 - Framework principal
- Spring Data JPA - Persistência de dados
- Spring Web - API REST
- Hibernate Validator - Validação de dados
- MySQL - Banco de dados relacional
- Maven - Gerenciamento de dependências
- MVC (Model-View-Controller) - Arquitetura em camadas
- Repository Pattern - Padrão de acesso a dados
- DTO (Data Transfer Object) - Transferência de dados
- Exception Handling - Tratamento global de exceções
- Filters & Interceptors - Manipulação de requisições/respostas
src/main/java/com/vmalmeida/jbank/
├── controller/ # Controladores REST
│ ├── dto/ # Data Transfer Objects
│ ├── WalletController.java
│ └── TransferController.java
├── entities/ # Entidades JPA
│ ├── Wallet.java
│ ├── Deposit.java
│ └── Transfer.java
├── service/ # Lógica de negócio
│ ├── WalletService.java
│ └── TransferService.java
├── repository/ # Acesso a dados
│ ├── dto/ # Projections
│ └── impl/ # Implementações customizadas
├── exception/ # Tratamento de exceções
├── filter/ # Filtros HTTP
├── interceptors/ # Interceptadores
└── JbankApplication.java
- IpFilter: Captura e injeta o IP do usuário em todas as requisições
- AuditInterceptor: Registra logs detalhados de todas as operações (método, URL, status, IP)
- Versionamento Otimista: Implementado com
@Versionna entidade Wallet - Transações: Uso de
@Transactionalpara garantir consistência
- StatementView: Interface de projeção para consultas otimizadas de extratos
- Queries Customizadas: Implementação de consultas complexas com paginação
- Hibernate Validator: Validação automática de DTOs
- GlobalExceptionHandler: Tratamento centralizado de exceções
- Problem Detail: Padronização de respostas de erro (RFC 7807)
POST /wallets # Criar carteira
DELETE /wallets/{walletId} # Excluir carteira
POST /wallets/{walletId}/deposit # Realizar depósito
GET /wallets/{walletId}/statements # Consultar extratoPOST /transfers # Realizar transferência- Java 21+
- Maven 3.6+
- Docker e Docker Compose
git clone <url-do-repositorio>
cd jbankcd docker
docker-compose up -d./mvnw spring-boot:runA aplicação estará disponível em http://localhost:8080
- tb_wallets: Armazena informações das carteiras (CPF, email, nome, saldo)
- tb_deposits: Registra todos os depósitos realizados
- tb_transfers: Registra todas as transferências entre carteiras
- Wallet 1:N Deposits
- Transfer N:1 Wallet (sender)
- Transfer N:1 Wallet (receiver)
POST /wallets
{
"cpf": "12345678901",
"email": "usuario@email.com",
"name": "João Silva"
}POST /wallets/{walletId}/deposit
{
"amount": 100.00
}POST /transfers
{
"senderWalletId": "uuid-sender",
"receiverWalletId": "uuid-receiver",
"amount": 50.00
}Este projeto consolidou conhecimentos em:
- Filters e Interceptors para manipulação e auditoria de requests/responses
- Arquitetura do Spring Web e criação de Handlers personalizados
- Validações avançadas com Hibernate Validator e tratamento de exceções
- Técnicas para garantir integridade das transações e controle de concorrência
- Consultas avançadas com JPA Projections para otimização de queries complexas
- Padrões de arquitetura e boas práticas de desenvolvimento backend
Victor Almeida
Desenvolvido durante curso da Build & Run com Bruno Garcia
⭐ Se este projeto foi útil para você, considere dar uma estrela!
#SpringBoot #JPA #HibernateValidator #BackendDevelopment #Java #API #SoftwareEngineering