Bom dia professor,
Eu fiz o exemplo da aula de colocar o @Cacheable(value = "ListaDeTopicos") no método lista(...) e funcionou! Mas ai eu fiz um outro teste, eu isolei toda a lógica que tinha nesse controller em outro método, e coloquei a anotação @Cacheable nesse método e percebi que o chache parou de funcionar. Teria alguma explicação para isso?
@GetMapping
public Page<TopicoDto> lista(@RequestParam(required = false) String nomeCurso,
@RequestParam int pagina,
@RequestParam int quantidade,
@RequestParam String nomeDoCampoParaOrdenacao) {
System.out.println("METODO LISTA");
return teste(pagina, quantidade, nomeDoCampoParaOrdenacao, nomeCurso);
}
@Cacheable(value = "ListaDeTopicos") // No value colocamos um indicador único para esse cache
public Page<TopicoDto> teste(int pagina, int quantidade, String nomeDoCampoParaOrdenacao, String nomeCurso) {
// Pageble é uma interface do spring
Pageable paginacao = PageRequest.of(pagina, quantidade, Sort.Direction.ASC, nomeDoCampoParaOrdenacao);
System.out.println("METODO TESTE");
if (nomeCurso == null) {
Page<Topico> topicos = topicoRepository.findAll(paginacao);
return TopicoDto.converter(topicos);
} else {
Page<Topico> topicos = topicoRepository.findByCursoNome(nomeCurso, paginacao);
return TopicoDto.converter(topicos);
}
}
O método lista chama o método teste, que posssui a anotação, mas o cache não funciona dessa forma.
Obrigado pela ajuda!