어노테이션 만들기 with @Qualifier

    어노테이션 만들기 with @Qualifer


    앞의 Qualifer를 활용한 경우 문제점을 보완하기 위해 어노테이션을 만든다. @Qualifier의 문제점은 @Qualifer 안에 있는 "xxxx"값이 문자열이라는 것이다. 예를 들어 @Qualifier("mainDiscountPolicy")라고 치고 싶은데, @Qualifer("maiiiiiinDiscountPolicy")처럼 의도치 않게 칠 수 있다. 이 경우, 문자 상태이기 때문에 코드 작성단계부터 에러를 감지하지 못한다. 

    어노테이션 만들기는 코드 작성단계부터 이런 오타를 잡아주기 위해 도입되었다고 보면 된다.

     

    어노테이션 만들기 with @Qualifier 코드


    @Target({ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.TYPE, ElementType.ANNOTATION_TYPE})
    @Retention(RetentionPolicy.RUNTIME)
    @Inherited
    @Documented
    @Qualifier("mainDiscountPolicy")
    public @interface MainDiscountPolicy {
    }
    1. 먼저 자바 클래스에서 Annotation을 선택한 후 'MainDiscountPolicy'로 만들어준다.
    2. @Qualifer를 치고 ctrl + 마우스 왼쪽 클릭을 하면 @Qualifier Annotation Class로 들어갈 수 있다. 여기에 들어간 후, @Qualifer에 있는 내용들을 복사한 후 내가 만든 Annotation에 붙여넣으면 된다. 이후 @Qualifer("mainDiscountPolicy")

     

    위의 순서대로 진행을 하면 완성이 된다. 이후 사용은 @Qualifer를 하는 것처럼 @MainDiscountPolicy를 사용해주면 된다. 차이점은 아래 이미지에서 확인이 가능하다. 어노테이션에 오타가 발생할 경우, 코드 작성 단계에서 에러를 감지할 수 있다.

     

     

    어노테이션 관련 참고


    어노테이션에는 상속이라는 개념이 없다. 그렇다면 어떻게 어노테이션을 상속받은 것처럼 사용할 수 있는 것일까? 이것은 스프링이 지원해주는 기능이다. 스프링은 어노테이션을 모아서 한꺼번에 상속받은 것처럼 사용할 수 있게 만들어 준다. 

    댓글

    Designed by JB FACTORY