- 서버가 시작되면 스프링 서버 내부에 거대한 컨테이너를 만들게 된다.
- 컨테이너 안에는 클래스가 들어가게 된다.
- 스프링 컨테이너는 필요한 클래스를 연결해준다.
1. 제어의 역전을 사용하여 Repository를 결정 (IOC)
2. 컨테이너가 선택해 Service에 Repository를 넣어주는 가정을 의존성 주입 (DI)
3. Repository중 @Primary Annotation으로 조절 가능하다.
@Configuration
- 클래스에 붙이는 Annotation
- @Bean을 사용할 때 함께 사용해 주어야 한다.
@Bean
- 메소드에 붙이는 Annotation
- 메소드에서 반환되는 객체를 스프링 빈에 등록한다.
- 주어진 클래스를 컴포넌트로 간주한다.
- 이 클래스들은 스프링 서버가 뜰 때 자동으로 감지된다.
- 생성자 사용 : @Autowired 생략이 가능하다
- setter 사용
- 필드에 바로 사용
- 스프링 Bean 사용하는 쪽, 스프링 빈을 등록하는 쪽 모두 사용가능
- 스프링 빈을 사용하는 쪽에서만 쓰면, 빈의 이름을 적어주어야 한다.
- 양쪽 모두 사용하면, @Qualifier 끼리 연결된다.
@Qualifier 와 @Primary 중 @Qualifier를 더 우선 순위로 둔다.
아주 유익한 내용이네요!