19

Spring Bean のいくつかの実装に依存する必要があるとします。1 つのAccountServiceインターフェイスと 2 つの実装があります:DefaultAccountServiceImplSpecializedAccountServiceImpl.

  1. Springでこれがどのように可能になりますか(どちらかの実装を注入する)?

  2. 次のインジェクションはどの実装を使用しますか?

    @Autowired
    private AccountService accountService;
    
4

2 に答える 2

21

広告。1:タイプではなくフィールド名にデフォルト設定されているものとは対照的に、@Qualifierアノテーションまたはオートワイヤーを使用できます。@Resource@Autowired

広告。2: 実行時に、2 つの Bean がこのインターフェースを実装していると言って失敗します。Bean の 1 つに追加のアノテーションが付けられて@Primaryいる場合、タイプによる自動配線時に優先されます。

于 2012-08-02T12:08:53.850 に答える
14
@Autowired
@Qualifier("impl1")
BaseInterface impl1;

@Autowired
@Qualifier("impl2")
BaseInterface impl2;

@Component(value="impl1")
public class Implementation1  implements BaseInterface {

}

@Component(value = "impl2")
public class Implementation2 implements BaseInterface {

}


For full code: https://github.com/rsingla/springautowire/
于 2014-12-07T05:42:02.380 に答える