정리
- 해당 인터페이스를 구현한 빈이 여러 개인 경우 @Primary를 붙여서 구분 주입하는 게 베스트.
(이유: type safe)
- (required=false) 옵션을 붙여서 선택으로 만들 수 있다.
- Repository와 Component 등 각각 애너테이션은 구분해서 쓰자.
- @Autowired 사용가능 위치: 생성자, 세터, 필드
- 빈은 초기화 이전에 주입이 된다. @PostConstruct는 빈 초기화 이후 실행
- Autowired가 빈을 탐색할 때 이름이 여러개면 빈 이름으로 탐색 시도한다.
*정확한 내부 구조 라이프사이클은 나중에 하겠음(사실 모르겠음)
레퍼지토리는 @Repository 애너테이션으로 구분해서 쓰는게 좋다.
@Autowired 사용가능 위치
생성자를 쓴 주입은 빈을 생성할 때도 autowired가 개입을 한다. 빈이 없으면 주입, 등록이 안되니까
생성자에 주입 붙일 때: 해당타입 빈 없으면 에러. ⇒ 객체 생성, 빈등록을 실패