.
+-- src/
+-- main/
| +-- .../scheduler/
| +-- user/
| +-- application/
| +-- domain/
| +-- infrastructure/
| +-- presentation/
+-- test/
+-- ...
DDD(Domain Driven Design)를 바탕으로 하는 레이어드 아키텍처(Layered Architecture)로 구성되어 있습니다.
- Presentation Layer
- Application의 입출력을 담당하는 Controller
- Application Layer
- Use Cases(Business Logic)를 구현하는 Service
- Domain Layer
- Application을 통해 해결하고자 하는 Domain Model
- cf. Domain과 Infrastructure 영역 사이의 의존 관계를 역전하는 Repository Interface도 Domain Layer에서 구현해야 하나, 개발 편의를 위해 Spring Framework와 결합도를 높이는 형태로 진행함에 따라 별도로 Repository Interface를 구현하지는 않습니다.
- Application을 통해 해결하고자 하는 Domain Model
- Infrastructure Layer
- 다른 계층을 위해 사용하는 기반 기술
- e.g. ORM을 구현하는 Spring JpaRepository 등
- 다른 계층을 위해 사용하는 기반 기술
Google Java Style을 적용합니다. Google Java Format 등의 도구를 사용해서 개발 중 코드 스타일을 일관적으로 유지하기를 권장합니다.