본문 바로가기
Back-End/Spring Boot

의존관계 자동 주입 - 애노테이션 직접 만들기

by 달의 조각 2022. 3. 21.
이 글은 김영한 님의 스프링 핵심 원리 - 기본편(https://inf.run/ZtdV)을 수강하며 정리한 글입니다.

 

@Qualifier("mainDiscountPolicy")

괄호 안의 문자는 컴파일 시 타입 체크가 안 돼서 오타가 발생해도 오류를 잡을 수 없는데,
애노테이션을 만들어서 문제를 해결할 수 있다.

 

📚 annotation

 

🍥 MainDiscountPolicy

애노테이션은 상속의 개념이 없다.
때문에 일반 @Qualifier처럼 사용할 수 있도록 @Qualifier에 붙은 애노테이션들을 가져와서 붙여 준다. (1 ~ 3줄)

단지 오타를 방지하기 위해 @Qualifier를 사용하는 것과 같은 하나의 애너테이션을 만든 것뿐이다.

Ctrl + B 단축키를 통해 사용되는 곳을 쉽게 알 수 있어서 편하다.

@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 OrderServiceImpl(MemberRepository memberRepository,@MainDiscountPolicy DiscountPolicy discountPolicy) {
	this.memberRepository = memberRepository;
	this.discountPolicy = discountPolicy;
}

댓글