Olá! Tudo bem? O método getOne está sendo deprecated porque ele vai lançar uma exceção se ele não conseguir encontrar algum registro pelo Id. Já o método findById vai realizar a busca e retornar um Optional, que é um objeto opcional já que tem a possibilidade de nada ser encontrado. O bom é que o Optional do findById facilita na hora de você fazer o tratamento que você preferir caso o registro não seja encontrado. Com esse outro método o código ficaria assim:
public Topico atualizar(Long id, TopicoRepository topicoRepository) {
Optional<Topico> optional = topicoRepository.findById(id);
if (optional.isEmpty()) {
// Fazer tratamento no caso de erro, podemos lançar exception, retornar uma mensagem de erro ou alguma outra abordagem
// Nesse exemplo retornarei nulo
return null;
}
// O método get pega o valor armazenado dentro do optional, que pode ou não estar presente, por isso devemos
// fazer uma verificação antes, ou com o método optional.isEmpty() ou optional.isPresent()
Topico topico = optional.get();
topico.setMensagem(this.mensagem);
topico.setTitulo(this.titulo);
return topico;
}