기주

의존성 주입(Dependency Injection) 본문

TIL

의존성 주입(Dependency Injection)

기주그지마 2024. 6. 10. 17:02

 

 

 

 

 

의존성 주입을 쓰는이유

 

 

 

1. 클래스간 결합도를 낮출 수 있다

 

-> 결합도를 낮춘다는 것(의존성을 줄인다는 것)은 변화에 강하다는것

 

객체의 생성과 사용을 분리한다

 

다른 객체를 직접 생성하지않고 외부에서 필요한 객체를 주입받기 때문에 각 역할을 분리할 수 있다

 

 

 

 

2. 테스트가 가능하다*

 

-> 테스트코드를 작성하는 것은 별도의 모의 객체를 생성하고 그 객체의 함수가 어떤 값을 반환한다고 가정한다(모킹) 

 

-> 이것도 의존성을 낮춰줘서 가능한일.

 

의존성 주입을 하지않으면 모의 객체의 함수를 모킹하는것이 아니라 실제 클래스의 함수를 가져와야하는데, 그럼 문제가 발생한다.

 

실제로 동작하면 안되는 것들이 동작하게 될 수 있다.

 

실제객체가 아닌 모의객체를 이용한 테스트가 가능해진다

 

 

(예시1 : db연결이 실제로 이루어지면 안된다.

 

1.테스트가 실제 db의 데이터에 영향을 줘서는 안된다

 

2.어떤 db든 상관없이 로직이 이루어져야한다. )

 

 

 

(예시2 : 메일전송

 

실제로 메일이 전송되어선 안된다)