ABOUT ME

Today
Yesterday
Total
  • DI/IOC
    카테고리 없음 2024. 1. 26. 10:17

    DI/IOC에 대해

     

    컨테이너란?

    IoCDI를 이해하기 전에 먼저 이해해야 할 개념이 있다. 그것은 바로 '컨테이너'이다.

     

    컨테이너란, 우리 대신 객체의 생성과 소멸 같은 부분을 전담해주는 역할을 한다.

     

    IoC(Inversion of Control)?

    그대로 해석을 돌리면 제어의 역전이라고 한다.

     

    제어는 무언가를 조종하고 다루는 것, 역전은 바뀌는 것이다.

     

    , 무언가를 조종하고 다루는 존재가 바뀌는 것을 IoC라고 한다.

     

    우리는 프로그램을 다룰 때, 우리가 직접 조종을 하곤 한다.

     

    우리가 아닌 다른 존재(컨테이너)가 조종을 한다.

     

    결과적으로, 객체들을 생성하고, 제어하고, 소멸하는 존재는 컨테이너이다.

     

    그래서 이것을 제어의 역전이라고 하는 것이다.

     

    제어의 역전: 객체의 생성 및 생명주기 관리 등의 제어가 개발자가 아닌 외부 엔티티에 의해 이루어집니다.

     

    유연성: IoC는 컴포넌트 간의 결합도를 낮추어 변경 및 유지보수를 용이하게 만듭니다. 새로운 컴포넌트를 추가하거나 기존 컴포넌트를 변경할 때 시스템의 다른 부분에 미치는 영향을 최소화할 수 있습니다.

     

    테스트 용이성: IoC는 의존성 주입과 함께 사용되어 테스트하기 쉬운 코드를 작성하는 데 도움을 줍니다. 의존성을 가짜(Mock) 객체로 대체하여 단위 테스트를 수행하기 쉬워집니다.

     

     

    DI (Dependency Injection):

     

    DI(의존성 주입):

     

    DI는 객체가 직접 필요한 의존성을 생성하는 것이 아니라, 외부에서 주입받는 방식을 나타냅니다.

    객체가 다른 객체에 의존하는 경우, 이 의존성은 외부에서 주입되어야 합니다. 이는 코드의 유연성을 높이고 테스트 용이성을 향상시킵니다.

    코드의 결합도를 낮추고 유지보수성을 높이는 데 도움이 됩니다.

    주로 생성자 주입, 메서드 주입, 속성 주입 등의 방법을 통해 의존성이 주입됩니다.

     

    생성자 주입은 객체 생성 시에 의존성을 설정하는데 사용되고, 메서드 주입은 이미 생성된 객체의 메서드를 호출할 때 의존성을 주입하는데 사용됩니다. 함수를 객체에 더하는 것이 아니라, 객체를 만들거나 이미 만들어진 객체의 동작에 필요한 외부 의존성을 설정하는 것으로 이해하는 것이 더 정확합니다.

     

    의존성 (Dependency): 객체 지향 프로그래밍에서 객체는 다른 객체에 의존할 수 있습니다. 이러한 의존성은 클래스 간의 관계를 형성하고 있습니다.

     

    주입 (Injection): DI는 의존성을 주입하는 방식으로 동작합니다. , 클래스가 필요로 하는 의존성(다른 객체)을 외부에서 주입받게 됩니다.

     

    제어 역전 (Inversion of Control, IoC): DI는 제어 역전의 한 형태로 볼 수 있습니다. 일반적으로 객체의 생성과 관리는 프로그램 내에서 해당 객체를 생성하는 쪽에서 제어됩니다. 하지만 DI에서는 객체의 생성과 관리가 외부 컨테이너에 의해 제어되므로 제어의 주체가 역전되었다고 말합니다.

     

    컨테이너 (Container): DI를 구현하는데에는 주로 컨테이너가 사용됩니다. 컨테이너는 객체의 라이프사이클을 관리하고, 의존성을 주입하며, 필요한 객체를 제공하는 역할을 합니다.

     

     

Designed by Tistory.