Spring 패키지 구조

호찌·2024년 4월 25일
post-thumbnail

💡 계층형 구조

각 계층을 대표하는 패키지를 기준으로 코드들을 구성한 방식이다. 대표적으로 controller, service, dao, dto 구조로 되어있는데, 같은 역할을 하는 코드끼리 응집시키며 다음 사진과 같다.

💡 계층형 구조의 장단점

해당 프로젝트의 이해도가 낮아도 전체적인 구조를 빠르게 파악할 수 있다는 장점이 있다.
반대로 특정 패키지에 너무 많은 클래스가 모이게 된다는 단점을 가진다.

💡 도메인형 구조

도메인(주체)을 기준으로 패키지를 구성한 방식이다. 주문 시스템을 예로 들면 사용자, 지점, 주문을 하나의 도메인으로 보고 이를 패키지로 구성한다. 다음 사진의 경우 domain이라는 패키지 내부에 도메인 별 패키지를 입력한 뒤, 각 도메인 별 패키지마다 계층 구조를 두도록 했다.

💡 도메인형 구조의 장단점

비슷한 목적, 성격을 가진 코드들이 하나의 패키지 내에 모여있기 때문에 응집성이 좋다는 장점이 있다. 이는 패키지의 이름만 봐도 어떤 역할을 하는지 직관적으로 알 수 있도록 도와준다. 또한 연관된 코드들이 모여있기 때문에 코드 스타일, 변수, 클래스 이름을 서로 참고하여 비슷한 패턴으로 개발할 수 있다.
그러나 해당 프로젝트의 이해도가 낮을 경우 전체적인 구조를 파악하기 어렵다는 단점이 있다.

💡 계층형 구조 vs 도메인형 구조

줄곧 계층형 구조를 이용하다 최근에 도메인형 구조를 사용했다. 실제로 하나의 도메인에서 움직이기 때문에 코드 스타일, 변수 이름, 클래스 이름을 편하게 작성할 수 있었다. 또한 계층형 구조보다 코드가 정돈되었다는 느낌을 많이 받았다. 이는 코드를 탐색하고 저장하는데 많은 이점을 주었다. 조금 더 이용해보고 도메인형에 대해 더 자세한 후기를 쓸 예정이다.

💡 참고자료

profile
지속성장형 개발자 호찌. 학습하며 발생한 궁금증을 정리했습니다.

0개의 댓글