기술면접 준비

DI와 IoC에 대해 아는 만큼 설명해주실 수 있을까요?

Albosa2lol 2024. 8. 13. 17:05

DI(Dependency Injection)와 IoC(Inversion of Control)는 객체 지향 프로그래밍에서 소프트웨어 컴포넌트 간의 결합도를 낮추기 위해 사용하는 개념들입니다.

 

 

IoC(Inversion of Control, 제어의 역전): 전통적인 절차 지향 프로그래밍에서는 프로그램의 흐름을 개발자가 직접 제어합니다. 그러나 IoC는 이 흐름의 제어권을 프레임워크나 컨테이너가 대신 가지도록 하여, 개발자가 신경 써야 할 부분을 줄여줍니다. 대표적으로 Spring 프레임워크에서 IoC 컨테이너가 객체의 생성과 생명 주기를 관리합니다.

 

 

DI(Dependency Injection, 의존성 주입): DI는 IoC의 구현 방법 중 하나로, 객체가 필요로 하는 의존성을 외부에서 주입하는 방식입니다. 예를 들어, 어떤 클래스가 다른 클래스의 인스턴스를 필요로 할 때, 직접 인스턴스를 생성하는 대신 외부에서 해당 인스턴스를 주입받습니다. 이를 통해 클래스 간의 결합도를 낮추고, 코드의 유연성과 테스트 용이성을 높입니다. DI는 생성자 주입, 세터 주입, 필드 주입 등 여러 방식으로 이루어질 수 있습니다. (예 : @Requiredargsconstructor)

 

 

IoC와 DI는 모두 모듈화된, 유지보수가 용이한 소프트웨어를 만드는 데 핵심적인 역할을 합니다.