의존성 주입(Dependency Injection, DI)
개요
- 정적 유틸리티 클래스나 싱글턴 방식은 사용하는 자원에 따라 동작이 달라지는 클래스에는 적합하지 않다.
- 구현 클래스에 의존성이 높아지면 유지보수가 어려워질 수 있다.
의존성 주입(DI)의 필요성
- 의존성 주입 방식을 통해 필요한 자원을 클래스에 넘겨줄 수 있다.
- 의존하는 자원에 따라 내부 기능의 동작이 바뀌므로, 클래스의 유연성, 재사용성, 테스트 용이성이 개선된다.
예제 코드
public class SampleService {
private final Repository repository;
public SampleService(Repository repository) {
this.repository = repository; // 의존성 주입
}
public static void main(String[] args) {
// 주입받는 구현체 클래스의 종류에 따라 별도의 코드 수정없이 내부 동작 방식이 달라질 수 있다.
SampleService sampleService1 = new SampleService(new BigRepository());
SampleService sampleService2 = new SampleService(new SmallRepository());
}
}
댓글