4차산업혁명의 일꾼/개발문답

의존성 주입이란 무엇인가요?

르무엘 2025. 6. 10. 07:30


A 객체가 어떤 작업을 수행하기 위해 B 객체를 필요로 하는 경우에 두 객체 사이에 의존성이 존재한다고 표현합니다. 이때, A 객체가 아닌 외부의 C 객체가 B를 생성한 뒤에 이를 전달해서 의존성을 해결하는 방법을 의존성 주입(Dependency Injection) 이라고 합니다.

유연하고 재사용할 수 있는 설계를 만들기 위해서는 코드의 변경 없이 다양한 실행 구조를 만들 수 있어야 합니다. 의존성 주입은 이를 돕습니다. 예를 들어, A 객체 내부에서 B를 직접 생성하는 경우에는 B에 대한 결합도가 높아집니다. 반면, B에 대한 생성 책임을 C에게 위임하고, C가 A에게 다시 전달해 주는 방식(의존성 주입)을 통해서 A는 B에 대한 결합도를 낮추고 유연한 설계를 만들 수 있습니다.

의존성 주입에는 어떤 방식이 있고, 각각 언제 사용할 수 있나요? 😀
의존성 주입은 주입 받는 위치에 따라서 생성자 주입(constructor injection), setter 주입(setter injection), 메서드 주입(method injection) 으로 나뉩니다.

실행할때마다 의존 대상이 매번 달라지는 것처럼 일시적인 의존이 필요한 경우에는, 메서드 주입을 사용할 수 있습니다. 반면, 동일한 의존이 필요한 경우에는 생성자 주입이나 setter 주입을 사용할 수 있습니다. 이때, setter 주입만을 사용한다면 객체가 일시적으로 불완전한 상태일 수 있으니 생성자 주입과 함께 사용하는 것도 좋은 방법일 수 있습니다. 개인적으로 생성자 주입을 가장 선호하는 편인데요. 정답이 있는 영역이 아니기에 팀 내부에서 결정된 합의를 따르는 것이 가장 좋은 방식 이라고 생각합니다.

LIST