DI
Dependency (의존 관계)
- 클래스 A, B에 대해 A가 B를 의존한다는 뜻은 B를 변경했을 때 A에 영향을 미친다는 뜻
- Ex) A 클래스의 필드로 B 클래스의 객체를 사용하는 경우
- 이런 의존관계를 끊기 위해서는 특정 클래스에 의존하는 대신 인터페이스를 사용하도록 추상화 시키면 됨
- Ex) 클래스 대신 인터페이스를 사용하면, 하나의 클래스 외에도 여러 클래스가 올 수 있음
Dependency Injection
- 의존 관계에서 인터페이스로 추상화 시킨 경우에는 실제 구현체를 넣어줘야 함
- 인터페이스에 대한 구현을 외부에서 수행하고 주입하는 행위를 dependency injection이라고 함
- 인터페이스를 사용하기 때문에 클래스간의 의존 관계가 고정되지 않음
- 생성자 혹은 setter 메소드 등을 이용해 주입 가능
DI 장점
- 의존성이 줄어듦으로 인해 변경에 대한 부담이 줄어듦
- 재사용성이 높아짐
- 테스트를 수행하기 쉬워짐
- 가독성이 높아짐
References
- https://mangkyu.tistory.com/150
- https://tecoble.techcourse.co.kr/post/2021-04-27-dependency-injection/