TIL

230일차(모험 139일차) - 어노테이션 직접 만들기

haedal-uni 2022. 5. 3. 22:10
728x90

[add] 애노테이션 직접 만들기 [#32] #36

@Qualifier("mainDiscountPolicy") 이렇게 문자를 적으면 컴파일시 타입 체크가 안된다.

다음과 같은 어노테이션을 만들어서 문제를 해결할 수 있다.

 

 

 

annotation 폴더 생성 후 MainDiscountPolicy 어노테이션 생성

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

 

MainDiscountPolicy 어노테이션을 쓰면 스프링 컨테이너 안에서 아래 기능들이 동작한다.

 

 

 

* 참고 

더보기

추가한 코드는 shift + shift 후 Qualifier

 

 

 

 

 

아래와 같이 만든 어노테이션을 RateDiscountPolicy에 추가한다. 

 

 

 

 

@MainDiscountPolicy 으로 입력하지 않고 @MaiDiscountPolicy 로 입력하면 

컴파일 오류가 뜬다는 장점이 있다.

 

 

 

 

 

OrderServiceImpl 코드도 수정 후 모든 test 코드를 실행시키면 에러가 뜨지 않는다.

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

 

 

 

728x90