지금까지 의존성 주입을 할 때 우리는 AppConfigurer 클래스와 같은 외부의 구성 정보를 직접 수동으로 입력하여 스프링 컨테이너가 필요한 모든 객체(빈)들을 생성하고 의존 관계를 설정할 수 있도록 하였습니다.

이러한 번거로움을 해결하기 위해, 스프링 프레임워크는 수동으로 클래스 구성 정보를 일일이 작성하지 않고, 자동으로 스프링 빈을 등록하는 컴포넌트 스캔(Component Scan) 기능을 지원합니다.

더 나아가, 컴포넌트 스캔만으로는 앞에서 우리가 봤던 것과 같은 구체적인 의존 관계 설정이 불가능하기 때문에 @Autowired 애너테이션을 통해 빈을 자동으로 등록함과 동시에 의존 관계가 설정될 수 있도록 편리한 기능을 제공합니다.

단순하게 생성자에 @Autowired 애너테이션을 붙이면 스프링이 관리하고 있는 해당 타입의 객체가 자동으로 주입되어 의존 관계가 완성됩니다.

참고로 생성자가 단 하나만 존재하는 경우에는 @Autowired 애너테이션을 붙이지 않아도 자동으로 의존 관계가 연결이 됩니다.