어노테이션 만들기 with @Qualifier
- Spring/Spring
- 2021. 11. 12.
어노테이션 만들기 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 {
}
- 먼저 자바 클래스에서 Annotation을 선택한 후 'MainDiscountPolicy'로 만들어준다.
- @Qualifer를 치고 ctrl + 마우스 왼쪽 클릭을 하면 @Qualifier Annotation Class로 들어갈 수 있다. 여기에 들어간 후, @Qualifer에 있는 내용들을 복사한 후 내가 만든 Annotation에 붙여넣으면 된다. 이후 @Qualifer("mainDiscountPolicy")
위의 순서대로 진행을 하면 완성이 된다. 이후 사용은 @Qualifer를 하는 것처럼 @MainDiscountPolicy를 사용해주면 된다. 차이점은 아래 이미지에서 확인이 가능하다. 어노테이션에 오타가 발생할 경우, 코드 작성 단계에서 에러를 감지할 수 있다.
어노테이션 관련 참고
어노테이션에는 상속이라는 개념이 없다. 그렇다면 어떻게 어노테이션을 상속받은 것처럼 사용할 수 있는 것일까? 이것은 스프링이 지원해주는 기능이다. 스프링은 어노테이션을 모아서 한꺼번에 상속받은 것처럼 사용할 수 있게 만들어 준다.
'Spring > Spring' 카테고리의 다른 글
빈 등록, 자동? 수동? 선택 기준은? (0) | 2021.11.12 |
---|---|
조회한 빈이 모두 필요할 때, List, Map (0) | 2021.11.12 |
@Autowired에서 조회되는 빈이 2개 이상일 경우 (1) | 2021.11.12 |
스프링 생산성 향상, Lombok 라이브러리 사용 (0) | 2021.11.12 |
스프링, DI 시 Optional 처리하기 (0) | 2021.11.12 |