의존성 주입

코드에서 객체를 직접 만들지 않고, 외부에서 주입을 받는 방법

Spring에서의 의존성 주입

Spring 에서는 주로 스프링 컨테이너에서 이를 담당한다.

  • 스프링 컨테이너가 객체 Bean생성 및 생명 주기를 관리
  • 어노테이션 명시를 통해 자동으로 의존성 주입하게끔 함

의존성 주입 방법에는 3가지 정도가 있으나, 생성자 주입이 많이 쓰이는 것으로 보임.

장점

역할과 구현 분리

외부에 의존하는 코드와 현재 코드의 역할이 분리됨.

유연한 변경

외부의 구현을 몰라도 현재의 코드를 비교적 안전하게 작성/변경할 수 있다. 반대로 외부 구현체가 바뀌어도 코드에 영향이 적다.

테스트 용이성

(생성자 주입인 경우) 테스트 시 생성자에 목 Mock 객체를 넘김으로써 테스트하고자 하는 범위만 간단하고 정확하게 테스트할 수 있다는 장점이 있다.