• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

@Primary방법과 @Autowired 필드명 방법 간의 우선순위

21.01.15 00:07 작성 조회수 144

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님 테스트 결과를 보니 맞을 듯 합니다^^