我正在尝试将特定的泛型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
}
所依赖初始化仅CompanyBean
或EmployeeBean
,从未两者。我也试着给豆子和我们设置相同的名字@Qualifier
注释。
确实如何使用菱形语法注入此bean? Spring能够解决给定的依赖关系吗?使用Spring 4.2.x.
编辑: 使用Spring 4.3应该是可能的。见Juergen Hoeller's talk
您是否尝试过自动装配'public AbstractBean <?扩展AbstractFrom> baseBean;'? – SimY4