코드 그라데이션
애노테이션 직접 만들기 본문
애노테이션 직접 만들기
@Qualifier("mainDiscountPolicy") 이렇게 문자를 적으면 컴파일시 타입 체크가 안된다.
다음과 같은 애노테이션을 만들어서 문제를 해결할 수 있다.
annotation 패키지 만들고 MainDiscountPolicy 라는 애노테이션 타입 생성
package inflearn.spring_core.annotation;
import org.springframework.beans.factory.annotation.Qualifier;
import java.lang.annotation.*;
@Target({ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.TYPE, ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
@Qualifier("mainDiscountPolicy") // 이거 더 추가
public @interface MainDiscountPolicy {
}
//@Qualifier 안에 있는 것을 다 붙임
RateDiscountPolicy에 직접 만든 애노테이션으로 변경
@Component
@MainDiscountPolicy
public class RateDiscountPolicy implements DiscountPolicy {}
//생성자 자동 주입
@Autowired
public OrderServiceImpl(MemberRepository memberRepository, @MainDiscountPolicy DiscountPolicy discountPolicy) {
this.memberRepository = memberRepository;
this.discountPolicy = discountPolicy;
}
//수정자 자동 주입
@Autowired
public DiscountPolicy setDiscountPolicy(@MainDiscountPolicy DiscountPolicy discountPolicy) {
this.discountPolicy = discountPolicy;
}
728x90
'Spring > 핵심 원리 구현' 카테고리의 다른 글
자동 수동의 올바른 실무 운영 기준 (1) | 2024.02.08 |
---|---|
조회한 빈이 모두 필요할 때 (0) | 2024.02.08 |
조회 빈이 2개 이상 - 해결 (0) | 2024.02.07 |
조회 빈이 2개 이상 - 문제 (0) | 2024.02.06 |
Lombok과 최신 트렌드 (0) | 2024.02.06 |
Comments