findById

❗Utilizamos o switchIfEmpty no service parar retornar uma exceção.

Service

Antes

@Transactional(readOnly = true)
public UserDTO findById(String id) {
    User user = repository.findById(id).orElseThrow(() -> new ResourceNotFoundException("Recurso não encontrado"));
    return new UserDTO(user);
}

Depois

public Mono<UserDTO> findById(String id) {
    return repository.findById(id)
            .map(UserDTO::new)
            .switchIfEmpty(Mono.error(new ResourceNotFoundException("ID não encontrado")));
}

Controller

Antes

@GetMapping(value = "/{id}")
public ResponseEntity<UserDTO> findById(@PathVariable String id) {
    UserDTO dto = service.findById(id);
    return ResponseEntity.ok(dto);
}

Depois

@GetMapping(value = "/{id}")
public Mono<ResponseEntity<UserDTO>> findById(@PathVariable String id) {
    return service.findById(id).map(userDTO -> ResponseEntity.ok().body(userDTO));
}

Atualizado