개발하는 자몽

[Spring Boot] 패키지 구조 본문

Java & Kotlin/Spring

[Spring Boot] 패키지 구조

jaamong 2022. 1. 7. 12:38

이 글과 관련하여 새로운 글을 작성했다. 도메인형과 계층형 패키지 구조가 무엇인지 알았다면 이 글도 읽어보자.

 

[Spring] 패키지 구조 설계

이전에 패키지 구조에 관한 글을 쓴 적이 있다. [Spring Boot] 패키지 구조 여러 글을 찾아봤는데 크게 두 가지 방식으로 패키지 구조를 구성한다. 도메인형 패키지 구조 계층형 패키지 구조 개발의

backend-jaamong.tistory.com

 

 


 



여러 글을 찾아봤는데 크게 두 가지 방식으로 패키지 구조를 구성한다.

 

  • 도메인형 패키지 구조
  • 계층형 패키지 구조

개발의 규모나 성격, 회사에서 진행하는 방식에 따라 정해지는 것으로 보인다. 두 방식에 대해 간단하게 정리해보자.

(위에서 언급한 것처럼 개발, 회사마다 다르므로 내가 정리한게 맞다는 보장은 없다.)

 

도메인형 패키지 구조

위 방식은 도메인(domain) 모델 위주로 패키지를 구성하는 것이다. 이미지를 첨부하면 좋을 텐데, 일단 글로 표현해보자.

예를 들어, 인스타그램이라면 User, Follower, Like, Post, 등으로 도메인을 나눌 수 있을 것이다.

User 패키지에는 로그인, 회원 가입, 탈퇴 처리 등의 기능

Post 패키지에는 포스트 업로드, 포스트 삭제 등의 기능

이렇게 도메인 별로 나눠서 패키지를 구성하는 것을 Layer 우선 방식으로 볼 수 있다.

src
  ㄴmain
     ㄴ java
         ㄴ User
         ㄴ Follower
         ㄴ Like
         ㄴ Post
  • 도메인 모델 위주 개발에 적합
  • 패키지간 중복 코드 발생 가능성 감소
  • 작은 규모의 프로젝트라면 기능 위주로 나뉘기 때문에 찾기가 편리함
  • 반대로 기능 단위가 많아지면 패키지가 많아지게 됨
  • 모듈 단위로 분리 시 어려움 존재

 

계층형 패키지 구조

계층형 패키지 구조는 말 그대로 계층으로 구분하여 구성하는 것이다. 계층형 패키지 구조는 찾아보니 개발자마다 다른 것으로 보인다. 나의 개발 경험으로 정리하자면 다음과 같이 구성할 수 있다.

 

Controller > Service/Provider > Dao

 

  • Controller : 클라이언트로부터 요청이 들어오면 해당 요청을 수행할 비즈니스 로직을 제어하는 객체
  • Service : Controller가 받은 요청을 처리하는 부분으로 대게 Create, Update, Delete에 해당하는 로직을 담당
  • Provider : Service처럼 Controller에서 받은 요청을 처리하는데 Read에 해당하는 로직을 담당
  • Dao : DB에 접근

Controller에서 Service와 Provider로 이동하는 흐름이지만, 요청을 처리하다보면 Service와 Provider 사이에서 이동할 수도 있다.

src
  ㄴmain
     ㄴ java
         ㄴ Controller
         ㄴ Service
         ㄴ Provider
         ㄴ Dao

 

 

SUMMERY

패키지 구조의 구성은 개발하면서 계속 공부해야 하는 부분인 것 같다. 개발 규모, 성격마다 다르게 구성하게 되고 또한 처리할 때의 부담같은 것도 고려해야 하므로 일단 계속 공부해보자.

 

 

 

 

 

출처 및 참고

 

Spring framework MVC 패턴

Spring framework MVC를 사용하여 웹개발을 진행하면서, Package/Class 구조를 어떻게 구성해야 많은 고민을 하게 된다. 그동안 web을 개발하면서 느끼는것은 정답은 없으며 어떻게 만들든지 결과만 잘나

5takoo.tistory.com

 

[용어] MVC, Spring Framework MVC, Controller, Service, DAO, DTO, VO - 개념

MVC (Model-View-Controller) - 소프트웨어 공학에서 사용되는 소프트웨어 디자인 패턴이다. - 이 패...

blog.naver.com

 

패키지 구조는 어떻게 구성하는 것이 좋을까?

목차 패키지 구조별 장단점 요약 나의 경험을 바탕으로 패키지 구조에 대한 생각 정리 참고 자료 패키지 구조는 어떻게 가져가는 것이 좋을까?에 대해서 걸어둔 링크의 글을 먼저 확인해보고,

joanne.tistory.com

 

패키지 구조는 어떻게 짜는 게 맞을까?

개인 프로젝트인 [꼬리별] 프로젝트를 진행하면서 생기는 오류와 개발하면서 느낀 점을 기록하는 곳

velog.io

 

Comments