[Spring] 애노테이션 직접 만들기

2023. 10. 17. 22:38Spring

다음과 같은 상황을 해결하기 위해 애노테이션을 직접 만들어보자
@Qualifier를 쓰게 되면 내가 안에 들어가는 문자가 main인데 mainn으로 잘못 입력할 수도 있다. 근데 이러면 컴파일 오류가 나지 않기 때문에 어디가 틀렸는지 확인하는데 애를 먹을 수 있다. 이러한 경우 mainn으로 입력하면 바로 오류가 뜨도록 애노테이션을 만들 수 있다.

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

@Documented까지는 Qualifier class에 있는 애노테이션을 그대로 가져온 것이고 우리가 지정할 이름을 @Qualifier로 정해준다.
그리고 @MainDiscountPolicy라는 애노테이션을 사용하게 되면 @MainnDiscountPolicy와 같이 틀리게 작성했을 때에도 컴파일 오류로 오류를 나타내준다. 이걸 이용하면 @Autowired도 재정의할 수 있다고 한다. 하지만 뚜렷한 목적 없이 무분별한 사용은 하면 안된다. 혼란만 생기기 때문이다. 그리고 굳이 @Primary만 써서 해결이 된다면 그것만 사용하는게 현명한 해결책일 것이다.
 
Reference


https://www.inflearn.com/course/lecture?courseSlug=%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8&unitId=55379

학습 페이지

www.inflearn.com