ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 어노테이션을 직접 만들기
    스프링/스프링 기본이론 2023. 2. 1. 22:39
    @Component
    @Qualifier("mmainDiscountPolicy") // 오류
    public class RateDiscountPolicy implements DiscountPolicy {
    // 생략
    }

    위와 같이 문자열을 잘못 입력하게 된다면 컴파일 에러로 잡기도 힘들고 오류를 발견하기 어려울 가능성이 있다.

     

    애노테이션을 직접 만들면 이러한 실수를 방지할 수 있다.

     

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

    애노테이션을 직접만드는 인터페이스이다.

    @MainDiscountPolicy라는 애노테이션이 Qualifier의 역할을 하는 것이다.

     

    @Component
    @MainDiscountPolicy
    public class RateDiscountPolicy implements DiscountPolicy {
    // 생략
    }

    @Qualifier 대신 우리가 직접 만든 @MainDiscountPolicy를 입력하면 된다.

    @Autowired
    public OrderServiceImpl(MemberRepository memberRepository, @MainDiscountPolicy DiscountPolicy discountPolicy) {
        this.memberRepository = memberRepository;
        this.discountPolicy = discountPolicy;
    }

    의존 관계를 주입받을 클래스의 생성자에서도 @MainDiscountPolicy를 붙여주면 된다.

     

     

     

    애노테이션을 재정의할 수는 있지만 무분별한 재정의를 하는 것은 혼란을 가져올 수 있기에 꼭 필요한 경우에만 사용해야한다.

    '스프링 > 스프링 기본이론' 카테고리의 다른 글

    웹 스코프와 프록시  (0) 2023.02.02
    프로토타입 스코프  (0) 2023.02.01
    빈 생명주기 콜백  (0) 2023.02.01
    빈이 2개 이상일 경우에 의존관계 주입  (0) 2023.02.01
    의존관계 자동 주입  (0) 2023.01.31
Designed by Tistory.