Spring에 대해 공부하던 중 Bean과 관련해 내용을 찾아보던 중 의존성이라는 단어와 의존성 주입이라는 것을 봤고 찾아봤다
의존성이란?
- 다른 것의 의지해 존재하는 성질을 의미
- class가 연결되어 있는 정도라 생각한다
- 깊이 연결될수록 사용할 객체(class) 수 증가
- 이는 여러 class들을 알아야되고 여러 class들로부터 영향을 받을 수 있다는 것을 의미
의존성 주입(Dependency Injection)
- 객체의 생성과 사용을 분리하는 작업
- Class들이 의존 관계가 깊은 경우를 방지하는 목적으로 외부에서 의존성을 대신해주는 것이며 이를 인터페이스가 해준다
- 인터페이스를 이용한 추상화 작업
- A, B class가 존재하고 A에서 B를 사용할 때 A 내에서 B 객체를 선언해 사용하는 것은 직접적인 관계를 의미
- B class 변화가 A class에 직접적으로 영향을 줄 수 있다
- C라는 인터페이스를 추가해 의존성을 주입한다면 A는 C를 확장한 B를 포함한 다양한 class들을 사용할 수 있다
의존성 주입 X : A class
B class
의존성 주입 O : A class
B class implements C
D class implements C
E class implements C
효과
- class 변화에 취약하다는 단점 개선
- 재사용성 증가
- 가독성 증가
- 테스트하기 좋은 코드
ref