1. 개념
A 객체가 어떤 작업을 수행하기 위해 B 객체를 필요로 하는 경우에 두 객체 사이에 의존성이 존재한다고 표현한다. 이때, A 객체가 아닌 외부의 C 객체가 B를 생성한 뒤에 이를 전달해서 의존성을 해결하는 방법을 의존성 주입(Dependency Injection) 이라고 한다.
유연하고 재사용할 수 있는 설계를 만들기 위해서는 코드의 변경 없이 다양한 실행 구조를 만들 수 있어야 한다. 의존성 주입은 이를 돕는다. 예를 들어, A 객체 내부에서 B를 직접 생성하는 경우에는 B에 대한 결합도가 높아진다. 반면, B에 대한 생성 책임을 C에게 위임하고, C가 A에게 다시 전달해 주는 방식(의존성 주입)을 통해서 A는 B에 대한 결합도를 낮추고 유연한 설계를 만들 수 있다.
2. 의존성 주입 방식
의존성 주입은 주입 받는 위치에 따라서 생성자 주입(constructor injection), setter 주입(setter injection), 메서드 주입(method injection) 으로 나뉜다.
실행할때마다 의존 대상이 매번 달라지는 것처럼 일시적인 의존이 필요한 경우에는, 메서드 주입을 사용할 수 있다. 반면, 동일한 의존이 필요한 경우에는 생성자 주입이나 setter 주입을 사용할 수 있다. 이때, setter 주입만을 사용한다면 객체가 일시적으로 불완전한 상태일 수 있으니 생성자 주입과 함께 사용하는 것도 좋은 방법일 수 있다.
- 참고
https://tecoble.techcourse.co.kr/post/2021-04-27-dependency-injection/
'개발 > Java & Kotlin' 카테고리의 다른 글
[JPA] JPA에서 양방향 @OneToOne 관계와 Lazy Loading의 한계 (67) | 2025.04.06 |
---|---|
[Spring] 스프링 트랜잭션 전파 속성 (39) | 2025.03.29 |
[Spring] CQRS 패턴이란? (98) | 2025.03.23 |
[Spring] 스프링 트랜잭션 AOP 동작 흐름 (43) | 2025.03.21 |
[Kotlin] 코틀린 + 스프링부트로 단숨에 완성하는 초강력 JWT 인증 시스템!💡 보안과 성능을 모두 잡아라!🔥(2) (40) | 2025.01.20 |