Spring 개발할때의 패키지 구조 🙂

Dev_ch·2022년 11월 4일
1
본 글은 2022.09.05에 작성된 게시글 입니다.

패키지 구조

Layer vs Domain 🤔

어느것을 사용하는 것이 더 효과적일까?

1. Layer 구조

controller, Service, dto 같은 아키텍트적인 계층형 기반으로 구성된 패키지 구조

  • 장점
    - 프로젝트에 이해가 낮아도 전체적인 구조를 빠르게 파악가능
    - 작성하고자 하는 계층이 명확할 경우 빠르게 개발이 가능

  • 단점
    - 각 레이어별로 수십개의 클래스들이 존재하여 코드 파악이 어려움
    - Layer를 기준으로 분리했기 때문에 코드의 응집력이 떨어짐

2. Domain 구조

도메인들이 최상단 루트로 구성된 패키지 구조

  • 장점
    - 관련된 코드들이 응집해 있음
    - 디렉토리 구조를 통해 도메인을 이해할 수 있음

  • 단점
    - 도메인 지식 없이 이해하기 어려움
    - 각 계층을 구분하기 위한 논의가 필요

3. Domain 구조를 자세히 살펴보면...🥸

member와 관련되어 사용되는 객체들로 구성

  • api : Controller 클래스로 구성
  • domain : 도메인 Entity에 대한 클래스로 구성, Enum 같은 클래스 또한 포함시킨다.
  • dto : Request, Response 객체로 구성
  • exception : 해당 도메인이 발생시키는 Exception 으로 구성

global은 프로젝트 전방위적으로 사용되는 객체들로 구성

  • common : 공통으로 사용되는 Value 객체들로 구성 ex) 공통된 Request, Response
  • config : 스프링 각종 설정들로 구성
  • error : 예외 핸들링을 담당하는 클래스
  • util : 유틸성 클래스들이 위치

잡담

근데 사실 아직 나는 Domain 구조로 개발을 진행해본적은 없다. 처음에 Layer 구조를 이용해서 개발하다보니 편해져서 같은 구조를 계속 지녔던 것 같은데 Domain 구조를 공부하다보니 진행했거나 하고있는 프로젝트에서 Domain 구조로 전환하게되면 어떻게 바뀔지 생각하고 그려보면서 좀 더 다르게 접근 할 수 있을 것 같아서 다음 프로젝트를 진행하게 되면 Domain 구조로 개발을 한번 해보고 싶다 🥹

profile
내가 몰입하는 과정을 담은 곳

0개의 댓글