관리 메뉴

공부 기록장 💻

[Spring] @Qualifier를 애노테이션으로 직접 만들어 사용하기 본문

카테고리 없음

[Spring] @Qualifier를 애노테이션으로 직접 만들어 사용하기

dream_for 2023. 2. 9. 12:15

인프런 - 스프링 핵심 원리 기본편 정리


 

동일한 타입이면서 이름만 다른 스프링 빈이 2개 이상 조회되는 경우 발생하는 문제를 해결하기 위해 @Qualifier를 적용하여 지정된 이름으로 스프링 빈을 구분할 수 있는 방법이 있었다.

그러나 @Qualifier("mainDiscountPolicy") 와 같이 문자를 적는 경우, 컴파일 시 타입 체크가 되지 않는다는 문제가 있다. 이를 해결하기 위해 애노테이션을 직접 만들어보자.

 

 

 

@interface MainDiscountPolicy 만들기

 

 

core 패키지 아래 annotation 폴더를 만들고 MainDiscounPolicy라는 이름의 애노테이션을 만들어보자.

 

 

@Qualifier 애노테이션에서 사용하고 있는 모든 애노테이션을 가져오도록 한 후, @Qualifier("mainDiscountPolicy") 를 추가해주자. 이제 기존의 Qualifier("mainDiscountPolicy")는 @MainDiscountPolicy 애노테이션으로 대체하여 사용이 가능하다.

 

 

 

@MainDiscountPolicy 사용하기

 

위에서 만든 @MainDiscountPolicy를 RatedDiscountPolicy에 적용하고,

 

 

의존 관계 주입이 필요한 OrderServiceImpl의 생성자 파라미터의 DiscountPolicy 앞에 추가해주자.

 

 

 

이제 @Qualifier 대신 직접 만든 애노테이션으로 @Qualifier를 재정의하여 사용할 수 있게 되었다.

 

728x90
반응형
Comments