DI(Dependency Injection)와 IoC(Inversion of Control)는 객체 지향 프로그래밍에서 소프트웨어 컴포넌트 간의 결합도를 낮추기 위해 사용하는 개념들입니다.
IoC(Inversion of Control, 제어의 역전): 전통적인 절차 지향 프로그래밍에서는 프로그램의 흐름을 개발자가 직접 제어합니다. 그러나 IoC는 이 흐름의 제어권을 프레임워크나 컨테이너가 대신 가지도록 하여, 개발자가 신경 써야 할 부분을 줄여줍니다. 대표적으로 Spring 프레임워크에서 IoC 컨테이너가 객체의 생성과 생명 주기를 관리합니다.
DI(Dependency Injection, 의존성 주입): DI는 IoC의 구현 방법 중 하나로, 객체가 필요로 하는 의존성을 외부에서 주입하는 방식입니다. 예를 들어, 어떤 클래스가 다른 클래스의 인스턴스를 필요로 할 때, 직접 인스턴스를 생성하는 대신 외부에서 해당 인스턴스를 주입받습니다. 이를 통해 클래스 간의 결합도를 낮추고, 코드의 유연성과 테스트 용이성을 높입니다. DI는 생성자 주입, 세터 주입, 필드 주입 등 여러 방식으로 이루어질 수 있습니다. (예 : @Requiredargsconstructor)
IoC와 DI는 모두 모듈화된, 유지보수가 용이한 소프트웨어를 만드는 데 핵심적인 역할을 합니다.
'기술면접 준비' 카테고리의 다른 글
Annotation이란 무엇이고 구체적으로 어떤 것이 있는지 예시를 들어 설명해주실 수 있을까요? (0) | 2024.08.20 |
---|---|
MVC 모델이란 무엇인지 설명해주실 수 있을까요? (0) | 2024.08.13 |
Java Map의 내부 구현은 어떻게 이루어져 있을지 추측해보실 수 있을까요? (0) | 2024.08.13 |
가비지 컬렉션 요약 (0) | 2024.08.06 |
가비지 컬렉션 동작 원리 & GC 종류 총정리 (0) | 2024.08.06 |