Spring
같은 타입의 bean이 2개 이상일 때
다오__
2023. 6. 19. 12:10
같은 타입의 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를 사용해주자