애너테이션 직접 만들기
// 애너테이션을 직접 만든다.
@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 {
}public class OrderServiceImpl implements OrderService {
// 생성자 자동 주입
@Autowired
public OrderServiceImpl(MemberRepository memberRepository,
@MainDiscountPolicy DiscountPolicy discountPolicy) {
this.memberRepository = memberRepository;
this.discountPolicy = discountPolicy;
}
// 수정자 자동 주입
@Autowired
public DiscountPolicy setDiscountPolicy(
@MainDiscountPolicy DiscountPolicy discountPolicy
) {
return discountPolicy;
}
}Last updated