이 글은 김영한 님의 스프링 핵심 원리 - 기본편을 수강하며 정리한 글입니다.
@Autowired 필드 명 매칭
@Autowired는 먼저 타입 매칭을 시도한 후, 여러 빈이 있으면 필드 이름, 파라미터 이름으로 빈 이름을 추가 매칭한다.
@Autowired
private DiscountPolicy rateDiscountPolicy
- DiscountPolicy 타입을 조회하면 fixDiscountPolicy, rateDiscountPolicy가 조회된다.
- rateDiscountPolicy가 매칭된다.
@Quilfier
구분할 수 있는 추가 옵션(제2의 이름)을 제공한다. 모든 코드에 @Qualifier를 붙여 주어야 한다는 단점이 있다.
@Component
@Qualifier("mainDiscountPolicy")
public class RateDiscountPolicy implements DiscountPolicy {}
@Autowired
public OrderServiceImpl(MemberRepository memberRepository, @Qualifier("mainDiscountPolicy") DiscountPolicy discountPolicy) {
this.memberRepository = memberRepository;
this.discountPolicy = discountPolicy;
}
@Primary
우선순위를 정하는 방법이다. @Autowired 시에 여러 빈이 매칭되면 @Primary가 우선권을 가진다.
@Component
@Primary // rateDiscountPolicy가 우선권을 가진다
public class RateDiscountPolicy implements DiscountPolicy {}
우선 순위
스프링은 자동보다는 수동이, 넒은 범위의 선택권보다는 좁은 범위의 선택권이 우선 순위가 높다.
- @Primary: 기본값처럼 동작
- @Qualifier: 매우 상세하게 동작
'Back-End > Spring' 카테고리의 다른 글
[Spring] 의존관계 자동 주입 - 조회한 빈이 모두 필요할 때, List, Map (0) | 2022.03.21 |
---|---|
[Spring] 의존관계 자동 주입 - 애노테이션 직접 만들기 (0) | 2022.03.21 |
[Spring] 의존관계 자동 주입 방법 (0) | 2022.03.20 |
[Spring] 🌟 컴포넌트 스캔과 의존관계 자동 주입 (0) | 2022.03.19 |
[Spring] 싱글톤 컨테이너 - 웹 애플리케이션과 싱글톤 (0) | 2022.03.17 |
댓글