delete

Service

Antes

@Transactional
public void delete(String id) {
    User entity = repository.findById(id)
            .orElseThrow(() -> new ResourceNotFoundException("Recurso não encontrado"));
    repository.delete(entity);
}

Depois

public Mono<Void> delete(String id) {
    //verificamos se o User existe
    //se ele não existir, lançará a exception
    return repository.findById(id)
            .switchIfEmpty(Mono.error(new ResourceNotFoundException("Recurso não encontrado")))
            //se ele existir, ele vai retornar um Mono de User
            //iremos transformar esse Mono de User em Void para deletar
            //o usuário
            .flatMap(existingUser -> repository.delete(existingUser));
}

Controller

Antes

@DeleteMapping(value = "/{id}")
public ResponseEntity<Void> delete(@PathVariable String id) {
    service.delete(id);
    return ResponseEntity.noContent().build();
}

Depois

O then retorna um void, que é o que precisamos.

	@DeleteMapping(value = "/{id}")
public Mono<ResponseEntity<Void>> delete(@PathVariable String id) {
    return service.delete(id).then(Mono.just(ResponseEntity.noContent().build()));
}

Atualizado