findById

Service

Antes

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

Depois

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

Controller

Antes

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

Depois

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

Atualizado