의존성 주입(Dependency Injection, DI)은 현대 소프트웨어 개발에서 중요한 개념 중 하나입니다

이는 객체 간의 결합을 최소화하고 유연성을 향상시키는 데 큰 역할을 합니다

이번 글에서는 의존성 주입의 개념과 종류에 대해 알아보도록 하겠습니다

 

의존성 주입이란?

의존성 주입은 객체 간의 의존성을 외부에서 제공되는 방식으로 주입하는 걸 의미합니다

이는 객체가 직접 의존하는 객체를 생성하거나 참조하는 대신 외부에서 의존성을 주입받아 사용함으로써 결합도를 낮추고 재사용성과 테스트 용이성을 높입니다

종류

  • 생성자 주입(Constructor Injection)
    생성자 주입은 의존성을 객체 생성 시에 생성자를 통해 주입하는 방식입니다
    이는 객체가 생성될 때 의존성이 필요하다는 것을 명시적으로 표현합니다
    주로 사용되는 방식 중 하나로, 객체의 생성과 의존성 주입을 동시에 처리할 수 있습니다
  • 세터 주입(Setter Injection)
    세터 주입은 객체의 세터 메서드를 통해 의존성을 주입하는 방식입니다
    이는 생성자 주입과 달리 객체 생성 이후에 의존성을 주입받을 수 있습니다
    주로 선택적인 의존성을 가지는 경우나 런타임에 의존성이 변경될 수 있는 경우에 사용됩니다
  • 인터페이스 주입(Interface Injection)
    인터페이스 주입은 인터페이스를 통해 의존성을 주입하는 방식입니다
    의존성 주입을 위한 별도의 인터페이스를 정의하고 해당 인터페이스를 구현하는 방식입니다

장점

  1. 결합도 감소
    객체가 직접 의존성을 생성하거나 참조하지 않고 외부에서 주입받기 때문에 객체 간의 결합도를 낮출 수 있습니다
  2. 유연성 향상
    의존성이 외부에서 주입되므로 런타임에 다른 의존성을 주입하여 동작을 변경할 수 있습니다
  3. 테스트 용이성
    의존성을 주입하여 모의 객체(mock object)를 사용하여 테스트하기 쉽습니다

+ Recent posts