DI / IoC

DI / IoC

카테고리
Backend
날짜
2024년 06월 13일
작성자
JeongjungsikJeongjungsik
태그

서론

DI와 IoC의 정의

DI(Dependency Injection)

DI는 객체가 자신의 의존성을 직접 생성하지 않고 외부에서 주입받는 디자인 패턴이다. 이는 코드의 재사용성을 높이고, 테스트를 용이하게 하며, 의존성 관리를 효율적으로 할 수 있게 한다.
  • 의존성(Dependency): 객체가 기능을 수행하기 위해 필요한 다른 객체를 뜻함
  • 주입(Injection): 필요한 객체를 외부에서 제공하는 과정이다.

IoC(Inversion of Control)

IoC는 프로그램의 제어 흐름을 개발자가 아닌 외부의 프레임워크나 컨테이너가 제어하는 디자인 원칙이다.전통적인 방식에서는 프로그램의 흐름을 개발자가 직접 관리하지만, IoC를 사용하면 이 흐름을 컨테이너가 관리하게 된다. ex) 스프링, Nest.js
 
  • 제어의 역전(Inversion of Control): 제어권이 개발자에서 프레임워크나 컨테이너로 넘어가는 것을 의미함
  • IoC 컨테이너: 객체의 생성과 라이프사이클을 관리하는 도구이다.

예시

// 외부에서 new ProductService, new CashService 객체를 선언하여 const productService = new ProductService(); const cashService = new CashService(); // 넘겨준다. const productController = new ProductController(productService, cashService); app.post('/products/buy', productController.buyProduct); app.post('/products/refund', productController.refundProduct);
// ProductController.js export class ProductController { productService; cashService; constructor(productService, cashService) { this.productService = productService; this.cashService = cashService; } .... }; }
💡
위의 코드처럼 의존성 주입을 Ioc에서는 자동으로 해준다.

댓글

guest