API de Score de Crédito — Clean Architecture em Java 17 & Spring 3
Projeto de engenharia backend em Java 17 e Spring Boot 3.3.5 focado no desacoplamento rigoroso entre regras negociais financeiras (cálculo e classificação de faixas de Score de Crédito e gestão cadastral) e adaptadores externos de persistência, segurança e transporte HTTP.
- Repositório Público Auditável: github.com/evslopes/desafioScoreAPICleanArch
O Problema Arquitetural: Regras de Crédito Acopladas a ORM
Em APIs corporativas tradicionais, é comum encontrar regras de elegibilidade ou faixas de score misturadas diretamente em entidades anotadas com @Entity do Hibernate/JPA ou dentro de Controllers Spring. À medida que políticas de crédito mudam ou novas fontes de dados entram em cena, testes unitários tornam-se lentos (exigindo subir contexto Spring/banco) e efeitos colaterais multiplicam-se.
Esta implementação resolve o problema aplicando Clean Architecture estrita sobre o ecossistema JVM:
Entrada HTTP
REST Controllers + Bean Validation
Segurança
Spring Security Filter Chain
Casos de Uso
Regras de Pessoa & Faixas de Score
Domínio Puro
Entidades & Políticas sem Spring/JPA
Gateways / Ports
Interfaces de Persistência
Infraestrutura
Spring Data JPA + Docker Compose
Decisões Técnicas & Separação de Responsabilidades
| Camada Arquitetural | Responsabilidade | Benefício Direto em Produção |
|---|---|---|
| Domain & UseCases | Entidades de negócio puras e motor determinístico de tradução numérica do Score (0–1000) em faixas semânticas de risco | Testabilidade unitária instantânea em Java puro, zero dependência de anotações JPA ou containers HTTP |
| Interface Adapters (Web) | DTOs específicos de entrada/saída, mapeadores explícitos e validação declarativa (Spring Validation) | Impede vazamento do modelo de banco na API pública (Mass Assignment protection) e padroniza contratos de erro |
| Security & Persistence | Controle de acesso via Spring Security, adaptadores Spring Data JPA e banco embarcado/containerizado | Permite substituir o mecanismo de banco de dados (H2 em testes rápidos vs banco relacional produtivo via Docker Compose) sem alterar uma linha de regra de negócio |
Confira a estrutura de pacotes, camadas de domínio, adaptadores Spring Boot 3.3.5 e configuração Docker diretamente no repositório público.