• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

의존관계 질문입니다.

22.06.13 23:16 작성 조회수 140

1


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

[질문 내용]
안녕하세요 김영한님, 좋은강의를 제공 해 주셔서 감사합니다.
빈 생명주기 콜백 시작 강의 12:20분에 setUrl 로 url 을 설정하셨는데
1. 이것도 의존성 주입이라고 생각해도 되는지 여쭤보고싶습니다.
이전 강의에서 의존성을 주입할 때 constructor, setter, field 로 주입을 할 수 있는데 제가 강의를 보며 궁금했던점은 url 이라는 의존성을 networkClient에 주입하는것이 아닐까 입니다. 만약에 의존성 주입이 아니라고 한다면 이것은 객체가 아닌 String type 이어서 그런걸까요?
 
2. 객체의 생성과 초기화를 분리하는 부분이 이해가 되지 않습니다.
이 예제에서 봤을때 NetworkClient 객체는 url 이 필수정보라 생각이 듭니다. 따라서 객체가 생성될때 url 이 무조건 들어가서 null 이 안뜨는게 맞지 않나? 라고 생각이 들며, 예제로 보여주시기 위해서 그런것인지 궁금합니다.

답변 1

답변을 작성해보세요.

0

David님의 프로필

David

2022.06.15

안녕하세요. 코드살인마님, 공식 서포터즈 David입니다.

1. 의존하는 객체를 외부로부터 주입받는 관점에서만 보면 의존관계 주입으로 볼 수 있습니다.

String도 객체를 생성할 수 있는 클래스니깐요.

다만, DI를 통해 이루고자 하는 목적은 구체적인 것보다는 추상적인 것에 의존함으로써 결합도를 낮추는 것입니다.

그런데 일반적으로 String을 사용할 때 추상화된 인터페이스를 사용하지 않고 String 타입을 사용합니다.

따라서, 의존관계를 외부로부터 주입받는 것만 놓고보면 의존관계 주입으로 볼 수 있지만 추상화된 것에 의존하여 결합도를 낮추는 목적에는 부합하지 않는다고 생각합니다.

2. 예제 코드는 강의 진행을 위해 간단하게 작성되어 있습니다.

초기화 작업이 간단하다면 객체의 생성과 동시에 초기화 작업이 진행될 수 있지만 초기화 작업이 무거워지면 객체의 생성에서 초기화 작업을 분리할 수 있습니다.

해당 예제에서는 초기화 메서드가 별도로 있고 해당 초기화 메서드를 빈의 생명주기에 맞춰 실행할 수 있는 방법을 보여주고 있기 때문에 강의 내용과 같이 작성된 것 같습니다.

감사합니다.