본문 바로가기

면접준비

DI, IoC에 대해 설명해주세요.

의존성 주입 (Dependency Injection - DI):

  • 개념: 의존성 주입은 클래스나 모듈 사이의 의존성을 외부에서 주입하는 디자인 패턴입니다. 일반적으로 클래스 내부에서 직접 의존 객체를 생성하는 것이 아니라, 외부에서 의존 객체를 주입받아 사용하는 방식을 의미합니다.
  • 목적: 의존성 주입은 코드의 유연성과 테스트 용이성을 향상시킵니다. 의존성을 외부에서 주입받기 때문에, 코드 변경 없이 다양한 의존 객체를 쉽게 교체할 수 있습니다.

 

 

제어의 역전 (Inversion of Control - IoC):

  • 개념: IoC는 프로그램의 흐름 제어가 개발자가 아닌 외부 컨테이너에게 넘어가는 디자인 원칙입니다. 일반적으로는 의존성 주입을 통해 객체 간의 의존성을 해결하며, 이를 통해 IoC를 구현합니다.
  • 목적: IoC는 코드의 결합도를 낮추고 재사용성을 증가시킵니다. 외부 컨테이너가 제어를 가져가기 때문에, 애플리케이션의 흐름이 개발자가 아닌 컨테이너에게 의해 결정되므로, 코드의 유연성이 증가하고 변경에 더 적응할 수 있습니다.

 

의존성 주입과 제어의 역전은 서로 긴밀하게 연결되어 있으며, 주로 프레임워크와 컨테이너를 통해 구현되어 사용됩니다. Spring 프레임워크는 DI와 IoC를 지원하는 대표적인 예입니다.

 

 

 

 

 

의존성 주입(Dependency Injection - DI)과 제어의 역전(Inversion of Control - IoC)은 소프트웨어 디자인 원칙 중 하나로, 코드의 유연성과 테스트 용이성을 향상시키며 결합도를 낮추어 재사용성을 증가시키는데 목적이 있습니다.

의존성 주입 (DI):

개념: 의존성 주입은 클래스나 모듈 사이의 의존성을 외부에서 주입하는 디자인 패턴입니다. 일반적으로는 클래스 내부에서 의존 객체를 생성하는 것이 아니라, 외부에서 의존 객체를 주입받아 사용하는 방식을 채택합니다.

목적:

  1. 코드의 유연성 향상: 외부에서 의존 객체를 주입받기 때문에, 코드 변경 없이 다양한 의존 객체를 교체할 수 있습니다.
  2. 테스트 용이성: 의존 객체를 주입받아 사용하므로, 테스트 시 모의 객체(Mock) 등을 주입하여 테스트가 용이합니다.

제어의 역전 (IoC):

개념: 제어의 역전은 프로그램의 흐름 제어가 개발자가 아닌 외부 컨테이너에게 넘어가는 디자인 원칙입니다. 주로 의존성 주입을 통해 객체 간의 의존성을 해결하며, 외부 컨테이너가 객체의 생성과 생명주기를 관리합니다.

목적:

  1. 코드의 결합도 낮춤: 객체 간의 결합도를 낮추어 유연한 코드를 작성할 수 있습니다.
  2. 재사용성 증가: 외부 컨테이너가 객체의 생성과 관리를 담당하므로, 재사용성이 향상됩니다.