본문 바로가기

카테고리 없음

[Spring] DI Annotation

@Primary

@Primary 어노테이션을 설정하면 @Autowired로 동일한 타입의 여러 빈을 찾게 되는 경우 자동 연결을 우선시 할 타입으로 설정한다.

동일한 타입 클래스 중 한 개만 @Primary 어노테이션 사용이 가능하다.

 

포켓몬 인터페이스

 

피카츄(@Primary 어노테이션 설정)

이외 포켓몬들

 

Service

 

Application에서 실행하면 피카츄만 동작한다. (Primary Annotation 설정)

 

Qulifier

@Qulifier 어노테이션으로 의존성 주입을 하는 경우 타입이 아닌 이름(id)으로 주입을 한다.

@Primary로 우선권을 지정하는 것 보다 더 우선권을 가진다.

 

1. 필드 주입을 이용하는 경우

피카츄 클래스 @Primary어노테이션 지운 후 모두 동일하게 @Component 어노테이션 달아줌

@Autowired 만으로는 타입이 동일한 3개의 bean 중 어떤 bean을 선택해야 할지 고를 수 없음

 

2. 생성자 주입을 이용하는 경우

 

List 타입으로 주입 받기

List 타입으로 하나의 타입인 빈들을 한 번에 주입할 수 있다. 순서는 bean의 클래스명 사전 순

 

Map 타입으로 주입 받기