추상화와 함께 의존성을 주입하는 다양한 방법
3장에서 우리는 오토와이어링(auto-wiring)을 사용할 수 있는 다양한 방법을 배웠다. 필드, 생성자 또는 설정자 주입 방법에 사용할 수 있는 @Autowired 애너테이션을 설명했으며 @Bean(스프링이 컨텍스트에 빈을 생성하는 데 사용) 애너테이션된 메서드의 매개변수로 구성 클래스 내에서 오토와이어링을 사용하는 방법도 설명했다.
물론 이 절에서는 실제 사례로 가장 많이 사용되는 생성자 주입 방식부터 시작하지만 다른 접근 방식도 알고 있어야 한다고 생각한다. 필자는 이 절에서 살펴본 것처럼 추상화를 사용한 DI가 3장에서 배운 모든 DI 방식과 동일하게 작동한다는 점을 강조하고 싶다. 이를 증명하기 위해 sq-ch4-ex2 프로젝트를 수정하여 @Autowired로 필드 의존성 주입(field dependency injection)을 먼저 해 보자. 그런 다음 프로젝트를 다시 변경하여 구성 클래스에서 @Bean 메서드를 사용해 보면 추상화를 이용한 DI가 어떻게 작동하는지 테스트할 수 있다.