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 attributeo 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.
 
            