-
어노테이션을 직접 만들기스프링/스프링 기본이론 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