DI를 '스프링이 알아서 해주는 것'으로만 외운 사람과, 왜 생성 책임을 떼어내야 하는지·필수와 선택 의존성을 어떻게 가르는지까지 답하는 사람을 구분하려는 질문이다. 답에 따라 생성자 주입 강제 이유나 순환 참조 처리로 깊이를 캐물을 수 있다.
의존성 주입(DI)은 객체가 필요한 협력자를 자기가 직접 new하지 않고, 외부 조립자가 만들어서 넣어주는 방식이다. 핵심은 생성 책임과 사용 책임의 분리다. 이렇게 분리해두면 구현을 바꿔 끼우거나 테스트 더블을 넣기 쉬워지고, 객체는 자기 일에만 집중한다. 필수 의존성은 생성자 주입으로 강제해 누락 가능성을 컴파일 시점에 잘라낸다.
new로 직접 만들던 서비스를 생성자 주입으로 바꿔서 테스트 작성이 갑자기 쉬워졌던 경험이 있다면 DI가 결합도에 어떤 영향을 주는지 설명할 수 있다
필드/세터 주입을 쓰다가 NPE나 누락 의존성을 만났던 경험이 있다면 왜 필수 의존성을 생성자로 강제해야 하는지 근거로 댈 수 있다
결제 모듈처럼 구현체를 환경별로 교체해 본 경험이 있다면 인터페이스에 의존하고 조립을 외부로 미루는 가치를 자기 말로 풀 수 있다
아직 공개된 답변이 없어요. 첫 공개 답변을 남겨보세요.