일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- nestjs auth
- 카카오
- 컴포넌트스캔
- 파이썬
- 스프링
- 해시
- TypeORM
- 구조체배열
- 카카오 코테
- @Component
- OpenCV
- C언어
- nestJS
- 코딩테스트
- C++
- thymeleaf
- nestjs typeorm
- 가상면접사례로배우는대규모시스템설계기초
- Nodejs
- git
- 프로그래머스
- python
- spring boot
- 시스템호출
- Spring
- 알고리즘
- 카카오 알고리즘
- 코테
- AWS
- @Autowired
Archives
- Today
- Total
공부 기록장 💻
[Spring] @Qualifier를 애노테이션으로 직접 만들어 사용하기 본문
동일한 타입이면서 이름만 다른 스프링 빈이 2개 이상 조회되는 경우 발생하는 문제를 해결하기 위해 @Qualifier를 적용하여 지정된 이름으로 스프링 빈을 구분할 수 있는 방법이 있었다.
그러나 @Qualifier("mainDiscountPolicy") 와 같이 문자를 적는 경우, 컴파일 시 타입 체크가 되지 않는다는 문제가 있다. 이를 해결하기 위해 애노테이션을 직접 만들어보자.
@interface MainDiscountPolicy 만들기
core 패키지 아래 annotation 폴더를 만들고 MainDiscounPolicy라는 이름의 애노테이션을 만들어보자.
@Qualifier 애노테이션에서 사용하고 있는 모든 애노테이션을 가져오도록 한 후, @Qualifier("mainDiscountPolicy") 를 추가해주자. 이제 기존의 Qualifier("mainDiscountPolicy")는 @MainDiscountPolicy 애노테이션으로 대체하여 사용이 가능하다.
@MainDiscountPolicy 사용하기
위에서 만든 @MainDiscountPolicy를 RatedDiscountPolicy에 적용하고,
의존 관계 주입이 필요한 OrderServiceImpl의 생성자 파라미터의 DiscountPolicy 앞에 추가해주자.
이제 @Qualifier 대신 직접 만든 애노테이션으로 @Qualifier를 재정의하여 사용할 수 있게 되었다.
728x90
반응형
Comments