Как объединить динамические c моно методы возврата - PullRequest
0 голосов
/ 22 января 2020

У меня есть 1 простой интерфейс.

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

, а затем реализован класс с методами.

, так как использовать mergeWith или любой другой метод для объединения этих методов моновосстановления

в моем основном классе я делаю что-то вроде ниже

List<Validator> vals;

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

однако не знаю, как поступить дальше

1 Ответ

0 голосов
/ 22 января 2020

Если вы хотите получить список результатов проверки, вам понадобится Flux. Вы можете преобразовать список валидаторов в Flux, а затем преобразовать его в плоский результат, например, так:

Employee employee = new Employee();

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

Или, если вы не хотите Mono<List<String>> и вместо этого можете вернуть Flux<String>, поскольку Flux похож на список, а Mono похож на отдельный объект.

Flux<String> validations = Flux.merge(validators.stream()
        .map( validator -> validator.performValidation(employee))
        .collect(toList()));
...