2023년 1월 1일
08:00 AM
Buffering ...

최근 글 👑

[백엔드] 기술 면접 Top30 - #11 DI, IoC

2023. 9. 15. 15:42ㆍ[백엔드] 기술면접
반응형

Ioc, DI

 

IoC ( Inversion of Control )

  • 제어의 역전이라고도 불리며, 애플리케이션의 제어 흐름을 프레임워크나 컨테이너에 위임하는 개념
  • 일반적으로 애플리케이션의 흐름은 애플리케이션 코드가 주도하는 것이지만,
    IOC를 사용하면 애플리케이션의 제어 흐름을 외부 컨테이너나 프레임워크에 위임하여
    애플리케이션의 라이프 사이클과 객체 관리를 담당

Ioc e.g.

  • 가장 일번적인 예시로는 Spring 프레임워크가 존재합니다.
  • Spring은 애플리케이션의 객체 생성, 관리, 의존성 주입, 라이프 사이클 관리 등을 담당합니다.
  • 개발자는 이러한 제어를 프레임워크에 위임하여 코드를 작성할 수 있습니다.
  • 코드의 모듈성과 유지보수성이 향상되며, 특히 대규모 애플리케이션의 개발과 관리가 용이해집니다.

DI ( Dependency Injection )

  • 의존성 주입이라고도 불리며, 어떤 객체가 다른 객체에 의존할 때, 이 의존성을 외부에서 주입하는 방식
  • 객체가 직접 의존하는 객체를 생성하거나 관리하지 않고 외부에서 주입받아 사용하는 것을 의미합니다.
  • 주로 생성자 주입, 메서드 주입 또는 속성 주입의 형태로 구현됩니다.

DI e.g.

  • 클래스 A가  클래스 B에 의존한다고 가정.
  • DI를 사용하면 클래스 A는 클래스 B의 인스턴스를 직접 생성하지 않고,
    외부에서 클래스 B의 인스턴스를 주입받아 사용합니다.
  • 이렇게 하면 클래스 A와 클래스 B 사이의 결합도를 낮출 수 있고, 유닛 테스트를 수행하기 쉬워집니다.

요약

DI(Dependency Injection)는 의존성 주입을 통해 객체 간의 결합도를 줄이고 유연성을 높이는 디자인 패턴이며, IoC(Inversion of Control)는 제어 흐름을 외부 컨테이너에 위임하여 유지보수성과 확장성을 향상시키는 디자인 패턴입니다. 이를 사용하면 코드의 모듈성과 테스트 용이성이 개선됩니다.
반응형