대부분의 블로그나 강의를 보면, 의존성 주입에서 생성자 주입을 권장한다.
왜일까?
이유를 알아보자.
class OrderServiceImplTest{
@Test
void createOrder(){
OrderServiceImpl orderService = new OrderServiceImpl();
...
...
}
}
이렇게 짜게 되면 OrderServiceImpl 안에서 어떤 의존성 주입이 필요한지 알 수 없다.
실제로 OrderServiceImpl 안에 Setter주입으로 Repository에 대한 의존성 주입이 필요하면, 이를 소스를 까보지 않고는 모른다.
반면, 생성자 주입을 하면 new OrderServiceImpl() 로 생성자를 만드는 시점에서, 컴파일 오류가 나기 때문에 누락된 의존성 주입을 확인할 수 있다.