Fiz o exercício e funcionou normal. Estou fazendo um projeto a parte para práticar todos os conhecimentos ao longo dos cursos.
Acontece que o cache não funcionou.
Meu cenário é: tenho uma página dividida em: um formulário de cadastro e em baixo uma listagem com os últimos 5 cadastros.
@RequestMapping(method=RequestMethod.GET)
@Cacheable(value="rpaView")
public ModelAndView exibe(ReciboPagamentoAutonomo rpa){
ModelAndView model = new ModelAndView("cadastros/rpa");
List<Empresa> empresas = empresaDao.listar();
List<ReciboPagamentoAutonomo> rpas = rpaDao.listarUltimosCinco();
model.addObject("empresas", empresas);
return model;
}
fiz as configurações iguais ao do curso, meu AppWeb está com o @EnableCaching
e com:
@Bean
public CacheManager cacheManager(){
CacheBuilder<Object, Object> builder = CacheBuilder.newBuilder().maximumSize(100).expireAfterAccess(5, TimeUnit.MINUTES);
GuavaCacheManager manager = new GuavaCacheManager();
manager.setCacheBuilder(builder);
return manager;
}
Isso não funcionou e acho que descobri o motivo, mas ainda não entendi.
fiz uns testes e criei uma página apenas com as listagens de empresa e os recibos sem o formulário de cadastro.
@RequestMapping("/")
@Cacheable(value="rpaView")
public ModelAndView exibe(){
ModelAndView model = new ModelAndView("index");
List<Empresa> empresas = empresaDao.listar();
List<ReciboPagamentoAutonomo> rpas = rpaDao.listarUltimosCinco();
model.addObject("empresas", empresas);
model.addObject("rpas", rpas);
return model;
}
A úncia coisa que mudou foi a assinatura do método, retirei o exibe(ReciboPagamentoAutonomo rpa) e passou a ser exibe().
Com isso o cache funciona perfeitamente no meu teste.
Estou utilizando a tag <form:form>
e <form:input>
e para evitar o erro:
java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'reciboPagamentoAutonomo' available as request attribute
o instrutor lá no curso I seção 7 informou que precisa deixar dísponivel no request. motivo pelo qual o método recebe o Rpa.
Agora o que eu quero entender, qual o motivo de sem receber RPA no método funcionar o cache. e Recebendo não funciona.