작성
·
199
0
안녕하십니까
강의 항상 감사드립니다.
다름이 아니오라
생성자 주입을 사용하는 경우에
생성자의 Parameter 명을 rateDiscountPolicy로 네이밍하였고
동시에 테스트를 위해 FixDiscountPolicy 클래스 정의 위에 @Primary를 작성하여
과연 '@Primary방법'과 '@Autowired 필드명 방법'이 동시에 사용되었을 떄 어떤것이 적용 되는지 확인을 해보았습니다.
그 결과로 아무리 생성자의 Parameter명을 'Spring Container의 Bean Naming'에 따라 네이밍 했다고 하더라도
@Primary 애노테이션이 기재된 타입이 우선순위로 책정되어 OrderServiceImpl은 RateDiscountPolicy가 아닌 FixDiscountPolicy에 의존하게 되더군요
제가 아직 단위 테스트 코드 작성에 단련되지 않은터라
제가 한 테스트 결과가 맞는 것인지 여쭙고자 질문 남기게 되었습니다.
답변 부탁드립니다.
항상 현업에 바쁘신 와중에도 늦은시각 까지 강의질문 답변에 신경써주셔서 감사합니다. ^^
답변 1
1
안녕하세요. Gyosun Shin님
@Autowired는 이름보다 먼저 타입으로 찾고, 같은 타입이 있을 때 대안으로 이름을 찾습니다. @Primary는 타입 문제 자체를 해결해버리기 때문에 @Primary가 우선권을 가질 것 같아요. 제가 테스트를 안해봤지만, Gyosun Shin님 테스트 결과를 보니 맞을 듯 합니다^^