Implementation of a spring web service that combines the domain driven design structure with clean architecture principles:
- Level 1: Domain
- Level 2: Application (contains the main services that deal with the business logic and DTO and interfaces to interact with outer - infrastructure - layer)
- Level 3: Entity (web package), Infrastructure (contains repository and rest client - HttpClient)
By combining those 2 architectures
- we skip the extra Interfaces and Interface Adapters layer of clean architecture.
- we skip the difficult DDD terminology and design.
but we keep main concepts such:
- domain driven.
- separation of concerns.
- layers that are fully decoupled.
- adapters (incoming requests, repositories, outgoing requests clients) that are easily changed without affecting other layers.
- and because of the previous, we achieve a solution that is scalable, maintainable, and extensible.