@Autowiredフィールド名,@Qualifier,@Primary
2541 ワード
2つ以上のクエリー・ターゲットの空の解決方法@Autowiredフィールド名一致 @Qualifier->@Qualifier->空の名前一致 @Primary, 1.@Autowiredフィールド名の一致@Autowiredはタイプマッチングを試み、複数の空がある場合はフィールド名、パラメータ名を使用して空の名前を追加します. 既存のコードフィールド名はrateDiscountPolicyであるため、正常に入力されます. フィールド名マッチングは、まずタイプマッチングを試み、結果に複数のスペースがある場合に動作する機能です. @Autowired照合の消去タイプマッチング タイプマッチング結果が2つを超える場合、空の名前をフィールド名 にマッチングする.
@Qualifierの使用@Qualifierは区切り記号を付加する方法です. 注入では、空の名前を変更するのではなく、追加の方法が提供されます. 空の登録時に@Qualifierを貼り付けます.@Qualifierは@Qualifierを検索するためにのみ使用されていることが明確で、良いです. @Primaryの使用@Primaryは優先度を決定する方法です. @Autowiredの場合、複数の空が一致する場合、@Primaryに優先度があります. 独自のAnnotationを作成@Qualifierはコンパイル時にタイプをチェックできません.この時はアニメーションを作って解決することができます. 明細書には継承されていない概念がある. のような複数のプレゼンテーションを統合した機能はspringがサポートする機能である. @Qualifierだけでなく、他のプレゼンテーションを組み合わせて使用することもできます.
@Autowired
private DiscountPolicy discountPoilicy
フィールド名を空の名前に変更privat DiscountPolicy rateDiscountPolicy
@Qualifierの使用
@Component
@Qualifier("mainDiscountPolicy")
public class RateDiscountPolicy implements DiscountPolicy {}
@Component
public class OrderServiceImpl implements OrderService {
private final MemberRepository memberRepository;
private final DiscountPolicy discountPolicy;
public OrderServiceImpl(MemberRepository memberRepository, @Qualifier("mainDiscountPolicy") DiscountPolicy discountPolicy) {
this.memberRepository = memberRepository;
this.discountPolicy = discountPolicy;
}
}
@Component
@Primary
public class RateDiscountPolicy implements DiscountPolicy {}
@Target({ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.TYPE, ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Qualifier("mainDiscountPolicy")
public @interface MainDiscountPolicy {
}
@Component
public class OrderServiceImpl implements OrderService {
private final MemberRepository memberRepository;
private final DiscountPolicy discountPolicy;
// @Qualifier With Annotation
public OrderServiceImpl(MemberRepository memberRepository, @MainDiscountPolicy DiscountPolicy discountPolicy) {
this.memberRepository = memberRepository;
this.discountPolicy = discountPolicy;
}
Reference
この問題について(@Autowiredフィールド名,@Qualifier,@Primary), 我々は、より多くの情報をここで見つけました https://velog.io/@hyun6ik/Autowired-필드명-Quilifier-Primaryテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol