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

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

나영서님의 프로필 이미지
나영서

작성한 질문수

스프링 핵심 원리 - 기본편

스코프와 Provider

강의노트 9장 25 페이지 질문

해결된 질문

작성

·

222

0

[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? 예
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예
3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예

[질문 내용]
안녕하세요, 좋은 강의 정말 잘 듣고 있습니다.
그리고 친절한 답변을 달아주시는 서포터즈 분들께도 항상 감사드립니다 :)
다름이 아니라, 강의노트 9장 25페이지에 나온

여기서 중요한점이 있다. request scope를 사용하지 않고 파라미터로 이 모든 정보를 서비스 계층에 넘긴다면, 파라미터가 많아서 지저분해진다. 더 문제는 requestURL 같은 웹과 관련된 정보가 웹과 관련없는 서비스 계층까지 넘어가게 된다. 웹과 관련된 부분은 컨트롤러까지만 사용해야 한다. 서비스 계층은 웹 기술에 종속되지 않고, 가급적 순수하게 유지하는 것이 유지보수 관점에서 좋다.

내용이 잘 이해가 되지 않아서 질문 드립니다.

  1. 첫번째 문장의 '이 모든 정보'란 무엇을 말하나요?
    코드만 봤을 때는 서비스 계층에 넘어가는 정보가 없는 것 같아서 질문 드립니다.

  2. 파라미터를 통해 서비스 계층으로 정보를 넘긴다는게 잘 와닿지 않습니다..
    예시를 들어주시거나 조금 더 설명을 해주시면 감사하겠습니다!

 

답변 1

2

안녕하세요. 나영서님, 공식 서포터즈 OMG입니다.
.

이 부분은 어렵게 생각하실 필요는 없을 것 같아요 ^^
image

컨트롤러에서 서비스를 호출할 때 문자열로 testId만 전달하고 있는데요,

서비스에서도 로그를 출력하는데, 전달받은게 id 밖에 없습니다.(="testId" 겠죠?)

 

image

 

그런데, 로그를 출력할 때를 보면uuid와 requestURL을 포함하여 출력하고 있습니다.

이 정보는 MyLogger가 관리하고 있기 때문에

image

컨트롤러에서 서비스 호출 시 id만 넘겨도(즉, 파라미터로 uuid와 requestURL을 넘기지 않더라도) myLogger를 서비스에서 호출하여 사용할 수 있기에 파라미터로 넘기지 않아도 됩니다.

 

 

LogDemoController -> logDemoService.logic("testId",URL,UUID);

vs

 LogDemoController -> logDemoService.logic("testId");

 

설명과 강조한 폰트를 생각해보시고 궁금한 점 있으면 댓글남겨주세요 :)
.
감사합니다.

뒤에 더 이어지는 내용이 있으나 그 부분은 제외하고 질문에 남기신 궁금한 사항에 대하여 답변 드립니다 ^^

나영서님의 프로필 이미지
나영서
질문자

uuid와 requestURL은 myLogger에 있기 때문에
서비스에서는 myLogger를 호출하고, 파라미터로 id만 넘기면 되기 때문에 편리하다는 내용이군요.
친절한 답변 덕분에 이해할 수 있었습니다. 감사합니다 :)

나영서님의 프로필 이미지
나영서

작성한 질문수

질문하기