Вы правы, что Spring поддерживает инъекцию только JDK-коллекций Spring Bean.Вы можете обойти это с помощью метода bridge @Bean
factory в одном из ваших @Configuration
классов, аналогично следующему:
import io.vavr.collection.List;
import java.util.Collection;
...
@Bean
public List<NameMatcher> vavrMatchers(Collection<NameMatcher> matchers) {
return List.ofAll(matchers);
}
С вышеописанным вы создалиvavr List
, который также является bean-компонентом Spring, поэтому вы можете @Autowire
использовать его с другими bean-компонентами Spring.Это избавляет вас от обертывания в месте инъекции, поэтому вам придется делать это только один раз для каждой коллекции бобов, а не один раз для каждого @Autowired
места введения.