본문 바로가기
Spring

같은 타입의 bean이 2개 이상일 때

by 다오__ 2023. 6. 19.

같은 타입의 bean이 2개 이상이기 때문에 @Autowired를 달아도 다음과 같은 오류가 뜬다

 

1번째 방법

주입받는 해당 객체의 이름 단순히 food로 두지 않고 을 직접 입력(pizza, chicken)하여 구분한다.

 

 

2번째 방법

Bean객체에 @Primary 어노테이션을 붙인다.

같은 타입의 Bean이 여러더라도 우선적으로 @Primary되어있는 bean객체를 주입한다.

 

 

 

3번째 방법

@Qualifier로 호칭을 붙힌다. 여기선 pizza로 두었다.

 

피자클래스
테스트화면

pizza라고 써놓은 해당 bean객체를 test시에 @Qualifier를 붙혀줌으로써 주입받 수 있다.

 

그러면

@Primary와 @Qualifier중 누가 우선순위가 높을까?

같은타입의 Bean들에 동시에 위 두개의 어노테이션이 사용된다면 @Qualifier의 우선순위가 더 높다.

따라서 

같은 타입의 Bean들이 여러개 있을 때 범용적으로 사용되는 Bean객체에는 @Primary를

지역적으로 사용되는 객체라면 @Qualifier를 사용하는게 좋다.

 

예를들어 식당에서 Chicken Bean의 사용비율이 95퍼센트가 되고 Pizza Bean의 사용비율이 5퍼센트가 된다면 Chicken Bean에 @Primary를 Pizza Bean에는 @Qualifier를 사용해주자

'Spring' 카테고리의 다른 글

스프링의 탄생과 하이버네이트  (1) 2023.10.23
Rest template란 무엇인가?  (0) 2023.06.21
MVC란 무엇일까?  (1) 2023.06.16
스프링 IoC 와 DI  (0) 2023.06.14
Gradle  (2) 2023.06.12