🔸 @Qualifier("mainDiscountPolicy")와 같이, 문자는 컴파일 시 타입체크가 안된다
➡️ 아예 깔끔하게 애노테이션을 만들어서 사용하자
@Target({ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.TYPE, ElementType.ANNOTATION_TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented @Qualifier("mainDiscountPolicy") public @interface MainDiscountPolicy{ } ------------ @Component @MainDiscountPolicy public class RateDiscountPolicy implements DiscountPolicy{ ... } -------------- @Autowired public DiscountPolicy setDiscountPolicy(@MainDiscountPolicy DiscountPolicy discountPolicy) { return discountPolicy; }
🔸 너무 무분별하게 사용하면 유지보수에 혼란만 가중할 수 있다.
➡️ 왠만한 경우는 스프링이 제공해주는 애노테이션으로 다 해결이 가능!!