Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Problemas com Cache GUAVA

Ao ir em listar produtos o hibernate faz a busca no BD toda vez q clica no botão, ão tendo validade o cache ?

    @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;
    }
3 respostas

OBS: método gravar consta a anotação abaixo

    @CacheEvict(value="produtosHome", allEntries = true)

    @RequestMapping("/")
    @Cacheable(value="produtosHome")
    public ModelAndView index() {        

        List<Produto> produtos = produtoDao.listar(); 
        ModelAndView modelAndView = new ModelAndView("home");
        modelAndView.addObject("produtos", produtos); 

        return modelAndView;
    }
solução!

Oi Thales

Parece alguma configuração que ficou faltando. Verifique as dependências no seu pom.xml:

<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>18.0</version>
</dependency>

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context-support</artifactId>
    <version>4.1.0.RELEASE</version>
</dependency>

A sua classe AppWebConfiguration deve ficar conforme abaixo:

@EnableWebMvc
@EnableCaching 
@ComponentScan(basePackageClasses={HomeController.class, ProdutoDAO.class, 
    FileSaver.class, CarrinhoCompras.class})
public class AppWebConfiguration {

    @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;
    }

    // restante do código omitido
}

O método gravar:

@RequestMapping(method=RequestMethod.POST)
@CacheEvict(value="produtosHome", allEntries=true)
public ModelAndView gravar(MultipartFile sumario, @Valid Produto produto, 
        BindingResult result, RedirectAttributes redirectAttributes){

    if(result.hasErrors()) {
        return form(produto);
    }

    String path = fileSaver.write("arquivos-sumario", sumario);
    produto.setSumarioPath(path);

    produtoDao.gravar(produto);

    redirectAttributes.addFlashAttribute("sucesso", "Produto cadastrado com sucesso!");

    return new ModelAndView("redirect:produtos");
}

Valeu fiz as alterações no método e testei novamente, deu certo ... Valeu