Spring中接口的注释

时间:2016-10-20 11:53:00

标签: spring-mvc interface annotations autowired

我在自动装配bean时出现问题,这些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");
  }

}

根据我的理解:Annotations on Interfaces? @Component Annotation也应该适用于所有子类。现在我有一个Mapper类返回从SpecificCalculator派生的所有类型。

@Component
public class CalculatorMapper {

@Autowired
private List<SpecificCalculator> specificCalculators;

public List<Calculator> retrieveCalculatorsByModuleId(Integer moduleId) {
  if(moduleId==...){
    return specificCalculators;
  }else{
  ...
  }
}

这不起作用。 Spring没有找到ConcreteSpecificCalculator并且没有注入它。如果我再次使用@Component注释ConcreteSpecificCalculator,它正在工作。任何人都可以向我解释一下吗?

0 个答案:

没有答案