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

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

혜민님의 프로필 이미지
혜민

작성한 질문수

스프링 핵심 원리 - 기본편

IoC, DI, 그리고 컨테이너

클라이언트 코드 명칭을 자세히 모르겠습니다.

작성

·

290

1

 

"애플리케이션 “실행 시점” 에 외부에서 실제 구현 객체를 생성하고 클라이언트에 전달해서 클라이언트와 서버의 실제 의존관계가 연결 되는 것을 “의존관계 주입” 이라고 한다."

"외부에서 실제 구현 객체를 생성하고 클라이언트에 전달(주입)함으로써 의존관계가 연결되는 것이다"

 

위에 두 문장이 있습니다. 

밑에 문장으로 예를 들어 설명하겠습니다.
문장을 3개로 나눠 보겠습니다.

1. 외부에서 실제 구현 객체를 생성
2. 클라이언트에 전달(주입)함
3. 의존관계가 연결

이렇게 나눠 받는데, 여기서 제가 궁금한 것은 

2번 클라이언트에 전달함 입니다. 

OrderServiceImpl 가 클라이언트 코드라고 하셨는데, 뭔가 딱 느낌오는게 없습니다.
왜? OrderServiceImpl가 클라이언트 코드인가 하는 느낌을 모르겠습니다..

 

더 자세히 말씀드리면 

1. '클라이언트' 와 '주문 서비스' 관계가 궁금하며

2. 처음에 '주문 서비스' 로 어떤 값이 들어오고 어떻게 클래스들이 이동하는지 흐름!!

3. 왜 주문 서비스가 클라이언트 코드인지.. 모르겠습니다

 

클라이언트=호출, 서버=응답 이라고 다른 게시글에서 김영한님이 댓글에 설명해주신걸 봤었는데 이해가 잘 되지 않았습니다 .. 

 

MemberRepository 도 클라이언트 코드이고("왜??"), DiscountPolicy 도 클라이언트 코드이고("왜??") OrderServiceImpl도 클라이언트 코드가 되는건지("왜??").. 그렇게 된다면 왜 그런건지 자세히 알고 싶습니다...

답변 1

1

안녕하세요. water_ yoon님, 공식 서포터즈 David입니다.

아래 글 답변을 확인해주세요:)

https://www.inflearn.com/questions/117662

https://www.inflearn.com/questions/135627

 

이미 영한님 글에서 자세히 설명해주고 있습니다. 호출과 응답 그 이상 그 이하도 아닙니다.

클라이언트와 서버의 관계를 생각하면, 클라이언트는 요청하고, 서버는 요청에 응답합니다.

A객체와 B객체가 있고 A객체에는 B객체의 메서드를 호출하는 코드가 있습니다.

이때, A객체 내에 B객체를 호출하는 코드가 클라이언트 코드가 되고, A객체로부터 호출되는 B객체의 메서드가 서버 코드가 됩니다.

감사합니다.

 

 

혜민님의 프로필 이미지
혜민

작성한 질문수

질문하기