의존성 주입(Dependency Injection, DI)은 현대 소프트웨어 개발에서 중요한 개념 중 하나입니다
이는 객체 간의 결합을 최소화하고 유연성을 향상시키는 데 큰 역할을 합니다
이번 글에서는 의존성 주입의 개념과 종류에 대해 알아보도록 하겠습니다
의존성 주입이란?
의존성 주입은 객체 간의 의존성을 외부에서 제공되는 방식으로 주입하는 걸 의미합니다
이는 객체가 직접 의존하는 객체를 생성하거나 참조하는 대신 외부에서 의존성을 주입받아 사용함으로써 결합도를 낮추고 재사용성과 테스트 용이성을 높입니다
종류
- 생성자 주입(Constructor Injection)
생성자 주입은 의존성을 객체 생성 시에 생성자를 통해 주입하는 방식입니다
이는 객체가 생성될 때 의존성이 필요하다는 것을 명시적으로 표현합니다
주로 사용되는 방식 중 하나로, 객체의 생성과 의존성 주입을 동시에 처리할 수 있습니다 - 세터 주입(Setter Injection)
세터 주입은 객체의 세터 메서드를 통해 의존성을 주입하는 방식입니다
이는 생성자 주입과 달리 객체 생성 이후에 의존성을 주입받을 수 있습니다
주로 선택적인 의존성을 가지는 경우나 런타임에 의존성이 변경될 수 있는 경우에 사용됩니다 - 인터페이스 주입(Interface Injection)
인터페이스 주입은 인터페이스를 통해 의존성을 주입하는 방식입니다
의존성 주입을 위한 별도의 인터페이스를 정의하고 해당 인터페이스를 구현하는 방식입니다
장점
- 결합도 감소
객체가 직접 의존성을 생성하거나 참조하지 않고 외부에서 주입받기 때문에 객체 간의 결합도를 낮출 수 있습니다 - 유연성 향상
의존성이 외부에서 주입되므로 런타임에 다른 의존성을 주입하여 동작을 변경할 수 있습니다 - 테스트 용이성
의존성을 주입하여 모의 객체(mock object)를 사용하여 테스트하기 쉽습니다
'-- 기타 -- > 일반 개념' 카테고리의 다른 글
[Git] .gitignore 란? (0) | 2024.04.03 |
---|---|
설정 값 저장 방식에 따른 장단점(config 파일, DB, arg 변수, 환경변수, 소스 코드) (0) | 2024.03.15 |
[프로그래밍 패러다임] AOP (관점 지향 프로그래밍) (0) | 2024.03.14 |
[디자인 패턴] 싱글톤 패턴 (0) | 2024.01.22 |
[디자인 패턴] 팩토리 패턴(Factory Pattern) (0) | 2024.01.21 |