Да, карта - это блокирующая и синхронная операция , для которой всегда будет определено время c.
Карта должна использоваться, когда вы хотите сделать преобразование объекта / данных в фиксированное время. Операции, выполняемые синхронно. например, ваша операция копирования свойств BeanUtils.
FlatMap следует использовать для неблокирующих операций или, короче говоря, что-то, что возвращает обратно Mono, Flux.
"как мне обработчик, что данный сотрудник не найден? " - findById возвращает пустое моно, если не найдено. Итак, мы можем использовать здесь switchIfEmpty.
Теперь давайте перейдем к тому, какие изменения вы можете внести в свой код:
public Mono<Employee> editEmployee(EmployeeEditRequest employeeEditRequest) {
return employeeRepository.findById(employeeEditRequest.getId())
.switchIfEmpty(Mono.defer(() -> {
//do something
}))
.map(employee -> {
BeanUtils.copyProperties(employeeEditRequest, employee);
return employee;
})
.flatMap(employee -> employeeRepository.save(employee));
}