web +a

annotation 직접 만들기 (@Qualifier 관련)

냥냥체뤼 2022. 7. 13. 22:05

이전 학습에서 @Autowired가 주입해줄 빈을 조회할 때 동일타입 빈이 2개이상 존재할 때 해결하는 방법 중 하나로 @Qualifier를 지정하는 방법을 알았다. (약간 포트키같은 느낌으루다가...)

 

그러나 @Qualifier를 연결할 때 @Qualifier("mainDiscountPolicy")처럼 지정을 하는데,

문자열이다보니까 오타가 날 수도 있다. 그래서 문제가 있어도 컴파일타임에 잡아낼 수 없다. 

 

 

 

이를 해결하는 좋은 방법은 @Qualifier 관련된 annotation을 새로 직접 정의해주는 것이다. 

(저 위에 붙은 annotation들은 @Qualifier에서 그대로 긁어온 것이다. @Qualifier 기능을 그대로 가져야 하므로..)

@Target({ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.TYPE, ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
@Qualifier("mainDiscountPolicy")
public @interface MainDiscountPolicy {

}

 

 

이렇게 새로 만들어진 @MainDiscountPolicy를 이용하면 타입체크가 되니까 그냥 @Qualifier("mainDiscountPolicy")를 사용할 때보다 안정적이다. 

 

반응형