2017-11-09 5 views
2

を発見したが、以下のようリポジトリサービスための構造とSpringFrameworkを使用してMongoDBのデータ、読み:私は実行している場合SpringFramework:予想される単一のマッチング豆が、私はプロジェクトを構築しています2

Repository: 
    + Interfaces: 
     - I <T extends Object> 
     - I1 extends I<M1> 
     - I2 extends I<M2> 
    + Implements: 
     - RI Abstract RI<T extends Object> 
     - RI1 extends RI<M1> implements I1 
     - RI2 extends RI<M2> implements I2 

Service: 
    + Interfaces: 
     - SI <T extends Object> 
     - SI1 extends SI<M1> 
     - SI2 extends SI<M1> 
    + Implements: 
     - Abstract SIIMPL : @Autowired I<?> 
     - SI1IMPL : extends SIIMPL<M1> implements SI1 
     - SI2IMPL : extends SIIMPL<M2> implements SI2 

を、それ「私は」可能なタイプのいかなる予選豆

:例外をスローしないと予想単一マッチング 豆が、2を発見した:I1、I2

RI2を削除すると正しく動作します。私の意見では、根本的な原因は抽象的な(SIIMPL)から別の抽象的な(I)にあると考えています 2つの実装はRI1とRI2なので、SpringはどのBeanを選択するのかわかりません。

誰かが考えている場合は、私にコメントを残してください。ありがとうございました!

答えて

2

まず、抽象SIIMPLクラスでワイルドカードではないジェネリックを使用する必要があります。それがどのように見えるように:

public class SI1IMPL extends SIIMPL<M1> implements ST1 { 

    public ST1IMPL(@Autowired I<M1> foo) { 
     this.foo = foo; 
    } 

} 
+0

public abstract class SIIMPL<T> { protected I<T> foo; // Don't autowire here } 

次に、上記のようにそこにそれを定義し、constuctor注射を介して、あなたの具体的なクラスにそれをautowire抽象クラスに私は反対ジェネリックをautowireはありませんどうもありがとうございます。それは本当に助けになる! – Hana

+0

いいえ問題は、うれしい私が助けることができる:) – Plog

関連する問題