인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

soap님의 프로필 이미지

작성한 질문수

스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판

게시글 목록 API - 페이지 번호 구현

XxxResponse를 service 패키지에 두신 이유가 궁금합니다.

해결된 질문

작성

·

132

·

수정됨

0

XxxRequest / XxxResponse 클래스를 controller 패키지 하위가 아닌 Service 패키지 하위에 두신 이유가 궁금합니다.

 

의존성 방향을 Controller부터 단방향을 유지하기 위해 하신것으로 유추 하는 바입니다. 하지만 XxxRequest / XxxResponse가 service 패키지 클래스에 있는게 조금 어색해 보여서요.

 

저는 controller 하위 패키지에 requeset / response를 두고

facade 혹은 service에 클래스로 묶어서 넘길경우 에는는 domain 계층에 만든 dto를 생성해서 넘깁니다.

 

제가 생각한게 맞는지 답변 부탁드립니다~

 

(강의 최고입니다. 저만 듣고 싶어요 흙흙)

 

답변 1

1

쿠케님의 프로필 이미지
쿠케
지식공유자

dncjf64님, 안녕하세요!

 

경계에 대한 고민이 없으면 대수롭지 않게 넘어갈 수 있는데, 아주 좋은 질문입니다!

일단 말씀하신대로 의존성 방향을 단방향으로 유지하기 위해서 service 패키지에 위치한게 맞습니다.

자바 언어 자체로는 패키지 간 import 제약이 없다보니, 이러한 관점에 대해 직접 신경쓰면서 개발하게 되는 부분이네요.

 

request/response라는 용어가 컨트롤러 API 요청/응답에서의 용어라는 관점을 벗겨내면 크게 어려움 없이 이해되실 수 있을 것 같은데요,

서비스 레이어의 요청/응답 객체라는 관점으로 request/response라는 네이밍을 지었습니다!

동일한 용어로 보이더라도 도메인 또는 경계마다 의미와 해석이 달라질 수 있어서, 이러한 관점이라고 봐주시면 될 것 같네요!

 

저는 controller 하위 패키지에 requeset / response를 두고

facade 혹은 service에 클래스로 묶어서 넘길경우 에는는 domain 계층에 만든 dto를 생성해서 넘깁니다.

위처럼 해도 문제는 없습니다!

다만, 레이어 넘어가면서 요청/응답 객체를 부가적으로 변환하고 새롭게 선언해야하는 과정이 번거로워서

서비스 레이어에서 요청/응답 객체를 만들었네요.

이것도 Request/Response라는 네이밍을 붙였을 뿐이지, 그냥 동일한 DTO라고 봐주시면 됩니다!

 

혹시 더 궁금한 점 있으시면 편히 문의 주세요!

감사합니다!

soap님의 프로필 이미지

작성한 질문수

질문하기