3.10.1. @Autowired
@Autowired 애노테이션을 붙여서 종속성을 주입할 수 있는데 XML 기반 설정파일에서의 오토 와이어링 설정 보다 더 유연하고 확장성이 좋아졌습니다.
- 일반 적인 setter 위에 붙일 수 있습니다.
- 메소드의 이름이 굳이 setter 형식일 필요가 없습니다.
- 필드와 생성자에도 붙일 수 있습니다.
public class SimpleMovieLister {
@Autowired
private MovieFinder movieFinder;
public void setMovieFinder(MovieFinder movieFinder) {
this.movieFinder = movieFinder;
}
public MovieFinder getMovieFinder() {
return movieFinder;
}
}
주의 할 것은 종속성을 주입할 후보자가 아무것도 없다면 에러가 발생한다는 것입니다. 즉 @Autowired 애노테이션이 붙은
메소드, 생성자, 필드의 경우 기본으로 필수 요소로 인식합니다. 이를 원치 않을 때는 다음과 같이 설정할 수 있습니다.
@Autowired(required = false)
Spring 2.1 M1에서는 해당 속성이 없습니다. Spring 2.1 M2 부터 지원하고 있습니다.
Spring 2.1 M2에서도 지원하고 있는 속성이 딱 한 개 입니다. 타입으로 종속성 주입할 대상을 찾습니다.