백엔드/Spring

[Spring] 디렉터리 패키지 구조 구성하는 방법

happy_life 2023. 3. 13. 20:26

스프링으로 프로젝트를 시작하려고 하는데, 어떻게 패키지의 계층 구조를 나눠야 효율적인지 궁금해졌습니다. 그래서 어떤 방법이 좋을지를 찾아보았는데, 이와 관련해 내용을 정리하려고 합니다.

 

 

계층형 디렉토리 패키지 구조

계층형 디렉토리 패키지 구조

 

계층형 디렉토리 패키지 구조는 아래와 같이 3가지로 구분됩니다.

 

1. Web Layer: 사용자의 요청과 이에 대한 응답을 반환하는 처리가 일어나는 Layer

 

2. Service Layer: 실제 비지니스 로직이 일어나는 Layer로 Web Layer와 Repository Layer 사이에 있는 Layer

 

3. Repository Layer: DB와 통신하는 Layer

 

계층형 구조의 장점

1, 전체적인  프로젝트의 구조를 빠르게 파악할 수 있습니다.

 

계층형 구조의 단점

1. 각각 패키지 디렉토리에 클래스들이 너무 많이 모이게 됩니다.

 

 

도메인형 디렉토리 패키지 구조

계층형 디렉토리와 달리 Domain 들을 중심으로 구분하는 것입니다.

도메인형 디렉토리 패키지 구조

 

도메인형 디렉토리 구조의 장점

1. 도메인 별로 패키지 분리가 가능해 계층형 방식보다 직관적입니다.

2. 각각 도메인들이 서로 의존하는 코드가 없도록 설계하여 코드의 재활용성이 증가합니다.

 

도메인형 디렉토리 구조의 단점

1. 프로젝트 이해도가 낮을 경우 전체 구조를 파악하기 어렵습니다.

2. 내 예상과 다른 패키지에 존재하는 경우 관련 코드를 찾기가 어렵습니다.

3. 패키지 간 순환참조가 발생할 수도 있습니다. - 같은 패키지 내부에 있어도 되는데, 다른 패키지에 존재하는 경우