如何通过Trait @Autowire豆类列表?

时间:2017-07-11 14:31:57

标签: spring scala autowired traits

我尝试通过Trait @Autowire bean列表,我收到错误:

  

通过带有[scala.collection.immutable.List]类型的索引0的构造函数参数表示的不满意的依赖性::找不到依赖的[scala.collection.immutable.List]类型的限定bean:期望至少有1个符合条件的bean作为此依赖关系的autowire候选者。依赖注释:{};嵌套异常是org.springframework.beans.factory.NoSuchBeanDefinitionException:没有为依赖项找到[scala.collection.immutable.List]类型的限定bean:期望至少有一个bean可以作为此依赖项的autowire候选者。

可以像Java一样吗?在我的Scala代码下面:

trait ProductDataProvider {
   def collect()
}

@Component
class SomeProvider() extends ProductDataProvider {
   override def collect(): Unit = ...
}

@Component
class ProductDataSourceFactory @Autowired()(providers: List[ProductDataProvider])() {
   def get(source: ProductDataSource.Value): ProductDataProvider = ...
}

如果你指出我的方向,我会很高兴的。

1 个答案:

答案 0 :(得分:2)

Spring是一个Java框架,它不能与Scala集合一起使用,将scala.collection.immutable.List类的用法替换为要注入bean列表的地方的java.util.List