프로젝트 시작
Spring MVC를 통해 애플리케이션을 만들 때는, 애플리케이션의 경계를 설정하고 애플리케이션의 기능 구현을 위한 요구 사항을 수집하는 것이다. 그 후에는, 프로젝트의 패키지 구조를 잡아야 한다.
- 애플리케이션 경계를 설정 : 요구사항에 맞춰서 어떤 애플리케이션의 기능을 특정 범위로 제한하는 것
패키지 구조 설정
- 기능 기반 패키지 구조
- 계층 기반 패키지 구조
1. 기능 기반 패키지 구조(package-by-feature)
- 패키지를 애플리케이션의 기능을 기준으로 구성하는 것
- 한 패키지 안에는 한 기능을 완성하기 위한 계층별 클래스들이 모여있다.
- API 계층 클래스, 서비스 계층 클래스, 데이터 액세스 클래스
2. 계층 기반 패키지 구조(package-by-layer)
- 패키지를 계층으로 보고 구성하는 것
- controller, DTO -> API 계층
- model, service -> 서비스 계층
- repository -> 데이터 액세스 계층
Spring Boot 팀에서는 기능 기반 패키지 구조
를 권장한다!
테스트와 리팩토링이 용이하고, 향후에 마이크로 서비스 시스템으로 분리가 용이하기 때문에