Credit Score RESTful API — Clean Architecture in Java 17 & Spring 3
Backend engineering project built with Java 17 and Spring Boot 3.3.5, focused on strictly decoupling financial domain rules (credit score tier classification and person lifecycle management) from external persistence, security, and HTTP transport adapters.
- Public Auditable Repository: github.com/evslopes/desafioScoreAPICleanArch
The Architectural Problem: Credit Rules Tangled with ORM
In conventional enterprise APIs, credit eligibility and score-band rules frequently leak into @Entity JPA classes or Spring @RestController methods. As credit policies evolve, unit tests slow down (requiring full Spring/database contexts) and regressions multiply.
This implementation solves that coupling by enforcing strict Clean Architecture on the JVM:
HTTP Inbound
REST Controllers + Bean Validation
Security
Spring Security Filter Chain
Use Cases
Person Lifecycle & Score Tiers
Pure Domain
Entities & Policies, Zero Spring/JPA
Gateways / Ports
Persistence Interfaces
Infrastructure
Spring Data JPA + Docker Compose
Layer Responsibilities & Production Benefits
| Architectural Layer | Responsibility | Production Engineering Benefit |
|---|---|---|
| Domain & UseCases | Pure Java entities and deterministic mapping from numeric credit scores (0–1000) into semantic risk tiers | Millisecond unit testing in plain Java with zero JPA annotation or HTTP container dependencies |
| Interface Adapters (Web) | Dedicated request/response DTOs, explicit mappers, and declarative Spring Validation | Prevents database schema leakage (Mass Assignment protection) and standardizes error contracts |
| Security & Persistence | Spring Security access control, Spring Data JPA repositories, and containerized runtime | Enables swapping storage engines (in-memory H2 for fast tests vs containerized relational DB via Docker Compose) without touching domain policies |
Inspect the package boundaries, pure domain entities, Spring Boot 3.3.5 adapters, and Docker setup in the public repository.