@Qualifier("mainDiscountPolicy") 이렇게 코드를 작성하면 컴파일시 타입 체크가 안된다.
컴파일 중에 오류를 잡을 수가 없다는 의미이다.("mainnDiscountPolicy"라고 오타를 내도 컴파일은 되고 그 이후에 Exception이 발생한다.)
이를 애노테이션을 만들어서 해결해보자.
위와 같이 "mainDiscountPolicy"를 Qualifier로 가지는 애노테이션을 생성하였다.
이제 우리는 @MainDiscountPolicy를 가져다가 사용하면 되는 것이다. 위와같이 오타를 발생하면
컴파일 전에 오류를 잡아낼 수 있어진다.
이제 OrderServiceImpl의 생성자 주입에 우리가 만든 애노테이션을 넣어주면 스프링이 어떤 타입의 할인정책을 사용해야하는지 알게되는 것이다.
테스트를 실행시켜보면 그동안 작성한 테스트 코드 31개가 모두 정상적으로 성공하는 것을 확인할 수 있다.
애노테이션에는 상속이라는 개념이 없다. 이렇게 여러 애노테이션을 모아서 사용하는 기능은 스프링이 지원해주는 기능이다. @Qualifier 뿐 아니라 다른 애노테이션들도 함께 조합해서 사용할 수 있다.
@Autowired도 재정의하여 사용할 수 있다. 하지만 스프링이 제공하는 기능을 뚜렷한 목적없이 무분별하게 재정의하는 것은 유지보수에 더 큰 혼란을 가져온다.
반응형
'Spring > Spring Core' 카테고리의 다른 글
의존관계 주입 : 자동 / 수동의 올바른 기준 (0) | 2021.03.23 |
---|---|
조회한 빈이 모두 필요할 때 - List / Map 사용하기 (0) | 2021.03.21 |
조회하는 빈이 2개 이상 😱😱 (0) | 2021.03.19 |
롬복과 최신 트랜드 (0) | 2021.03.19 |
생성자 주입을 선택해라!😠😠 (0) | 2021.03.18 |