728x90
Dependency(의존성)란?
“A가 B를 의존한다.”
의존대상 B가 변하면, 그것이 A에 영향을 미친다.
즉, B의 기능이 추가 또는 변경되거나 형식이 바뀌면 그 영향이 A에 미친다.
의존성 주입은 의존 관계를 객체의 외부에서 결정하고, 필요한 객체를 주입하여 사용하는 방법이다.
DI(의존성 주입) 세 가지 방식
- 생성자 주입(Constructor Injection)
객체를 생성할 때 의존하는 객체를 생성자의 매개변수로 전달하여 주입한다. - 설정 주입(Setter Injection)
의존하는 객체를 설정 메서드(setter)를 통해 주입한다. - 인터페이스 주입(Interface Injection)
의존하는 객체를 특정 인터페이스를 구현한 객체로 주입한다.
DI(의존성 주입)의 장점
- 느슨한 결합(Loose Coupling)
의존 객체와 의존되는 객체 사이의 결합도를 낮출 수 있다. 이는 객체 간의 상호 의존성을 줄여 변경에 대한 영향을 최소화하고, 모듈성을 높이며, 코드의 유연성을 개선한다. - 테스트 용이성
의존 객체를 Mock 객체로 대체하여 의존 객체의 실제 동작에 의존하지 않고 테스트를 진행할 수 있도록 도와준다. 이를 통해 의존 객체의 동작을 제어하고 모의 객체를 주입하여 예상된 동작을 시뮬레이션할 수 있다. - 코드의 재사용성
의존하는 객체를 모듈화하고 추상화하여 중복 코드의 제거와 재사용을 통해 코드의 양을 줄일 수 있다. 해당 객체를 변경하거나 대체할 때 다른 객체들에게 영향을 덜 주며, 변경 작업이 더욱 안전하고 쉽다. - 확장성
새로운 의존 객체를 추가하거나 기존의 의존 객체를 변경하는 작업이 간단해진다. 새로운 객체를 주입함으로써 애플리케이션의 기능을 확장하고, 다양한 구현을 대체하거나 조합하여 유연한 시스템을 구축할 수 있다. - 가독성과 유지 보수성
의존 관계가 외부에서 명시되므로 코드를 읽거나 이해하기 쉬워진다. 또한, 의존성을 쉽게 변경하거나 대체할 수 있으므로, 유지 보수 작업이 간편해진다.
728x90
'개발일기 > Java' 카테고리의 다른 글
영속성 컨텍스트란 (0) | 2023.06.01 |
---|---|
Spring MVC에서의 예외 처리 기법 (0) | 2023.05.31 |
객체지향 프로그래밍(OOP) (0) | 2023.05.30 |
테스트 코드 작성 삽질 기록 (1) | 2023.04.21 |
@NoArgsConstructor / @AllArgsConstructors 생성자를 막 만들지 말자! (0) | 2023.04.20 |