0

我有 1 个简单的界面。

public interface Validator{
    public Mono<String> perFormValidation(Employee e);
}

然后用方法实现类。

那么如何使用 mergeWith 或任何其他方法来合并这些单声道返回方法

在我的主要课程中,我正在做如下的事情

List<Validator> vals;

    @Autowired
    public ValidatorService(List<Validator> vals) {
        this.vals= vals;
    }

但是不确定如何进一步进行

4

1 回答 1

0

如果你想得到一个验证结果列表,你需要一个Flux. 您可以将验证器列表转换为 a Flux,然后将其 flatMap 到验证结果,如下所示:

Employee employee = new Employee();

Mono<List<String>> validations = Flux.fromIterable(vals)
        .flatMap(validator -> validator.performValidation(employee))
        .collect(toList());

或者,如果您不想要 aMono<List<String>>而是可以返回 a ,Flux<String>因为 aFlux类似于列表,而Mono类似于单个对象。

Flux<String> validations = Flux.merge(validators.stream()
        .map( validator -> validator.performValidation(employee))
        .collect(toList()));
于 2020-01-22T20:32:31.717 回答