- @Autowired
- 필요한 의존 객체의 타입에 해당하는 빈(Bean)을 찾아 주입한다.
- required
- 기본값은 true (따라서 찾지 못하면 어플리케이션 구동 실패)
- 사용할 수 있는 위치
- 생성자 (스프링4.3 부터는 생략 가능)
- setter
- 필드
- 경우의 수
- 해당 타입의 빈이 없는 경우
- 해당 타입의 빈이 한개인 경우
- 해당 타입의 빈이 여러개인 경우
- 빈 이름으로 시도
- 같은 이름의 빈을 찾으면 해당 빈 사용
- 같은 이름의 빈을 못찾으면 실패
- 빈 이름으로 시도
- 같은 타입의 빈이 여러개 일 때
- @Primary
- 해당 타입의 빈 모두 주입 받기
- @Qualifler (빈 이름으로 주입)
- 동작 원리
- BeanPostProcessor
- 새로 만든 빈 인스턴스를 수정할 수 있는 라이프 사이클 인터페이스
- AutowiredAnnotationBeanPostProcessor extends BeanPostProcessor
- 스프링이 제공하는 @Autowired와 @Value 어노테이션 그리고 JSR-330의 @Inject 어노테이션을 지원하는 어노테이션 처리기
- BeanPostProcessor
old posting/Spring Framework