Professor, Achei outra forma que não repita a chamada "topicoRepository.findById(id);",
vi que no seu exemplo eu faço :
Optional topico = topicoRepository.findById(id);
e se ele retornar dado eu chamo o método atualizar e lá ele fazia topicoRepository.getOne(id);
então eu troquei o método atualizar conforme está aqui embaixo e agora eu não preciso mais fazer o getOne mas apenas o findById lá dentro uma única vez.
@PutMapping(value = "/{id}")
@Transactional
public ResponseEntity<TopicoDto> atualizar (@PathVariable Long id, @RequestBody AtualizacaoTopicoForm form){
Topico topico = form.atualizar(id, topicoRepository);
if(Objects.nonNull(topico)) {
return ResponseEntity.ok(new TopicoDto(topico));
}
return ResponseEntity.notFound().build();
}
//Metodo atualizar
public Topico atualizar(Long id, TopicoRepository topicoRepository) {
Optional<Topico> topico = topicoRepository.findById(id);
if(topico.isPresent()) {
topico.get().setTitulo(this.titulo);
topico.get().setMensagem(this.getMensagem());
return topico.get();
}
return null;
}