Genericサブタイプに特定の汎用Beanを注入しようとしていますが、Springは依存性を解決できません。 Beanから型を削除することで、すべてが期待通りに機能します。ここで汎用サブタイプのSpringへの依存性注入
public class AbstractFrom{
// ...
}
public class EmployyForm extends AbstractFrom{
// ...
}
public class CompanyForm extends AbstractFrom{
// ...
}
abstract class AbstractBean<T extends AbstractFrom>{
public abstract void calculate(T form);
}
@Component
public CompanyBean extends AbstractBean<CompanyForm>{
public void calculate(CompanyForm form){
// specific impl
}
}
@Component
public EmployeeBean extends AbstractBean<EmployyForm>{
public void calculate(EmployyForm form){
// specific impl
}
}
ターゲットクラスがされています:ここでは例があるアクティブなプロファイルの
@Service
public BaseService{
@Autowire
public AbstractBean<AbstractFrom> baseBean; // <- NoSuchBeanDefinitionException
// @Autowire
// public AbstractBean baseBean; <- Injection works as is expected
}
のDependsだけCompanyBean
またはEmployeeBean
、決して両方を初期化されます。私も豆と私たちと同じ名前を設定してみました@Qualifier
注釈。
ダイヤモンド構文を使用してこのBeanを挿入する方法はありますか? Springは特定の依存関係を解決できますか? Spring 4.2.xの使用
編集: 春4.3で可能であるべきです。私はあなたがおそらくAutowireのために、これを好きになるだろうが、なぜ2つの別々の塩基形態にEmployeeFormとCompanyFormを分離した後、BaseServiceにTWOのentiresをしないでされていません知っているJuergen Hoeller's talk
あなたは 'public AbstractBean <? 'をオートワイヤリングしようとしましたか? extends AbstractFrom> baseBean; '? – SimY4