728x90
[add] 애노테이션 직접 만들기 [#32] #36
@Qualifier("mainDiscountPolicy") 이렇게 문자를 적으면 컴파일시 타입 체크가 안된다.
다음과 같은 어노테이션을 만들어서 문제를 해결할 수 있다.
annotation 폴더 생성 후 MainDiscountPolicy 어노테이션 생성
@Target({ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.TYPE, ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Qualifier("mainDiscountPolicy")
public @interface MainDiscountPolicy {
}
MainDiscountPolicy 어노테이션을 쓰면 스프링 컨테이너 안에서 아래 기능들이 동작한다.
* 참고
더보기
![](https://blog.kakaocdn.net/dn/49WZ6/btrBaNxsw91/6pBOxSeTIP6dbV5hMBR2U1/img.png)
추가한 코드는 shift + shift 후 Qualifier
![](https://blog.kakaocdn.net/dn/49WZ6/btrBaNxsw91/6pBOxSeTIP6dbV5hMBR2U1/img.png)
아래와 같이 만든 어노테이션을 RateDiscountPolicy에 추가한다.
@MainDiscountPolicy 으로 입력하지 않고 @MaiDiscountPolicy 로 입력하면
컴파일 오류가 뜬다는 장점이 있다.
OrderServiceImpl 코드도 수정 후 모든 test 코드를 실행시키면 에러가 뜨지 않는다.
@Autowired
public OrderServiceImpl(MemberRepository memberRepository, @MainDiscountPolicy DiscountPolicy discountPolicy) {
this.memberRepository = memberRepository;
this.discountPolicy = discountPolicy;
}
728x90
'TIL' 카테고리의 다른 글
232일차(모험 141일차) - 조회한 빈이 모두 필요할 때, List, Map (0) | 2022.05.05 |
---|---|
231일차(모험 140일차) - 프로젝트 (0) | 2022.05.04 |
229일차(모험 138일차) - @Autowired 필드 명, @Qualifier, @Primary (0) | 2022.05.02 |
226일차(모험 135일차) - 롬복과 최신 트렌드 (0) | 2022.04.29 |
225일차(모험 134일차)- 생성자 주입을 선택해라! (0) | 2022.04.28 |