-- 기타 --/일반 개념
Dependency Injection(의존성 주입, DI)란?
JunKang
2024. 3. 14. 13:40
의존성 주입(Dependency Injection, DI)은 현대 소프트웨어 개발에서 중요한 개념 중 하나입니다
이는 객체 간의 결합을 최소화하고 유연성을 향상시키는 데 큰 역할을 합니다
이번 글에서는 의존성 주입의 개념과 종류에 대해 알아보도록 하겠습니다
의존성 주입이란?
의존성 주입은 객체 간의 의존성을 외부에서 제공되는 방식으로 주입하는 걸 의미합니다
이는 객체가 직접 의존하는 객체를 생성하거나 참조하는 대신 외부에서 의존성을 주입받아 사용함으로써 결합도를 낮추고 재사용성과 테스트 용이성을 높입니다
종류
- 생성자 주입(Constructor Injection)
생성자 주입은 의존성을 객체 생성 시에 생성자를 통해 주입하는 방식입니다
이는 객체가 생성될 때 의존성이 필요하다는 것을 명시적으로 표현합니다
주로 사용되는 방식 중 하나로, 객체의 생성과 의존성 주입을 동시에 처리할 수 있습니다 - 세터 주입(Setter Injection)
세터 주입은 객체의 세터 메서드를 통해 의존성을 주입하는 방식입니다
이는 생성자 주입과 달리 객체 생성 이후에 의존성을 주입받을 수 있습니다
주로 선택적인 의존성을 가지는 경우나 런타임에 의존성이 변경될 수 있는 경우에 사용됩니다 - 인터페이스 주입(Interface Injection)
인터페이스 주입은 인터페이스를 통해 의존성을 주입하는 방식입니다
의존성 주입을 위한 별도의 인터페이스를 정의하고 해당 인터페이스를 구현하는 방식입니다
장점
- 결합도 감소
객체가 직접 의존성을 생성하거나 참조하지 않고 외부에서 주입받기 때문에 객체 간의 결합도를 낮출 수 있습니다 - 유연성 향상
의존성이 외부에서 주입되므로 런타임에 다른 의존성을 주입하여 동작을 변경할 수 있습니다 - 테스트 용이성
의존성을 주입하여 모의 객체(mock object)를 사용하여 테스트하기 쉽습니다