Spring mvc Spring中的接口注释

Spring mvc Spring中的接口注释,spring-mvc,interface,annotations,autowired,Spring Mvc,Interface,Annotations,Autowired,我无法自动连接从带有注释的接口派生的bean @Component @EnableAsync public interface Calculator { @Async public Future<String> calculate(); } public interface SpecificCalculator extends Calculator { } public class ConcreteSpecificCalculator implements Specifi

我无法自动连接从带有注释的接口派生的bean

@Component
@EnableAsync
public interface Calculator {
  @Async
  public Future<String> calculate();
}

public interface SpecificCalculator extends Calculator {
}

public class ConcreteSpecificCalculator implements SpecificCalculator {

  @Override
  public Future<String> calculate() {
    // do calculation here
    return new AsyncResult<String>("hello");
  }

}
@组件
@使能同步
公共接口计算器{
@异步的
公共未来计算();
}
公共接口专用计算器扩展计算器{
}
公共类ConcreteSpecificCalculator实现SpecificCalculator{
@凌驾
公共未来计算(){
//在这里做计算
返回新的异步结果(“hello”);
}
}
从我的理解来看,@Component注释也应该适用于所有子类。现在我有了一个Mapper类,它返回从SpecificCalculator派生的所有类型

@Component
public class CalculatorMapper {

@Autowired
private List<SpecificCalculator> specificCalculators;

public List<Calculator> retrieveCalculatorsByModuleId(Integer moduleId) {
  if(moduleId==...){
    return specificCalculators;
  }else{
  ...
  }
}
@组件
公共类计算器{
@自动连线
专用计算器;
公共列表检索计算器ByModuleId(整数moduleId){
如果(moduleId==…){
返回计算器;
}否则{
...
}
}
这不起作用。Spring找不到ConcreteSpecificCalculator,也没有注入它。如果我再次用@Component注释ConcreteSpecificCalculator,它就起作用了。有人能给我解释一下吗?

这里的一些讨论:您需要@Configurable(autowire=autowire.BY_TYPE)吗在类级别?不确定…这里有一些讨论:您是否需要在类级别使用@Configurable(autowire=autowire.BY_TYPE)命令?不确定。。。