1

在我的 Spring 项目中,我广泛使用来自vavr库的集合。有时我需要注入 bean 的集合。据我所知,Spring 只能从 JDK 注入集合,例如List, Set,Map等。有没有办法注入 vavr 集合?我想做这样的事情:

@Component
class NameResolver {

    @Autowired
    io.vavr.collection.List<NameMatcher> matchers; // how to make it work?
}
4

1 回答 1

3

您是正确的,Spring 仅支持注入 Spring bean 的 JDK 集合。你可以在你的一个类中使用一种 @Bean工厂方法来解决@Configuration这个问题,类似于:

import io.vavr.collection.List;
import java.util.Collection;

...

@Bean
public List<NameMatcher> vavrMatchers(Collection<NameMatcher> matchers) {
    return List.ofAll(matchers);
}

通过以上内容,您创建了一个List也是 Spring bean 的 vavr,因此您可以@Autowire将其放入其他 Spring bean。它使您免于在注射部位进行包装,因此您只需为每个 bean 集合做一次,而不是为每个@Autowired注射部位做一次。

于 2019-06-14T10:31:37.810 回答