0
におけるジェネリック医薬品とサービスを生成します。は春
@Service
public class A<T extends I> {
@Autowired
T val;
}
@Service
public class B1 implements I { }
@Service
public class B2 implements I { }
public interface I { }
@Service
public class C {
@Autowired
A<B1> subservice;
}
春はA.valのために複数の候補があると文句を言うだろう。 Aの可能なサービスの両方を明示的に構築することを除いて、これに対する解決策がありますか?
autowiredフィールドで '@ Qualifier'を使用すると、必要な正確なBeanを指定できます。 – 11thdimension
コンストラクタインジェクションを使用して変換するとどうなりますか(とにかくお勧めです)? – chrylis
サブクラスを作成することは強制されません(あなたが恐れている場合)。 Aを単純なクラスにして、Tを引数として単純なクラスを作成し、 '@Bean public A a1(B1 b){ \t \t return new A <>(b);のような2つのメソッドを追加することができます。 \t} 'と入力してください。 –