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

Spring boot possui cache?

Fiz uma aplicação simples com spring boot após finalizar o curso.

Essa aplicação mostra um grafico do highcharts e utiliza como parametro uma variavel que setei chamada currentDate, Essa data é a base para que eu consiga abrir o arquivo com os dados do grafico ex. 20170425_file.txt.

A minha duvida é, quando vira o dia, o spring continua pegando a data do dia anterior.

Será que preciso tratar isso com código ou o spring tem algum parametro de cache?

Obrigado

Fabricio

4 respostas

Oi Fabrício, não entendi muito bem sobre essa parte de pegar a data do dia anterior, entretanto, considerando que está lidando com data, recomendo a leitura sobre como podemos realizar tarefas agendadas com o spring.

Nele tem uma parte que fala a respeito do cron, que é um mecanismo que permite executar tarefas num determinado tempo.

Abraços.

Oi Alex,

Obrigado pela resposta.

Acho que nao me expressei direito. Vou tentar reformular:

Tenho uma variavel que armazena a data do dia. (today):

public static String currentDate = DateFormat.FormatDate();
DateFormat.FormatDate() # É uma classe com um método estático que apenas pega a data atual do dia e formata para YYYYMMDD

Se eu subo o spring neste momento com java -jar minhaapp.jar minha aplicacao funciona corretamente.

Exemplo: http://ip-do-servidor/any_resource/ funciona corretamente pois a aplicacao em si está usando a variavel currentDate corretamente. Exemplo 20170427.

Porém amanhã, quando eu acessar o endereço novamente, vai continuar sendo exibido os dados do dia 20170427 e nao de 20170728.

Por isso perguntei se pode ser algum problema de cache.

Eu achei essa opção na documentacao do spring:

spring.resources.chain.cache=false # Enable / disable caching in the Resource chain

Mas não consegui testar ainda.

Este é um problema comum que aplicações mais complexas enfrentam?

solução!

Oi Fabrício, por padrão ele não possui cache, você precisa habilitar a opção e configurar o que desejar cachear. Veja um exemplo no próprio user guide -> https://spring.io/guides/gs/caching/. É claro, por ser uma variável estática, ela vai ser mantida enquanto a aplicação estiver de pé, porém, não significa que ela não pode ser atribuída novamente.

Sobre o que está acontecendo: provavelmente, quando você está fazendo a request para o endereço que você está usando, não está chamando novamente o método que pega a data atual, não vejo outra alternativa além dessa, recomendo que deixe algum log para dar no console e ver se realmente está chamando o método que pega a data atual.

Ou então, um outro caso considerando o seu contexto, a sua implementação para pegar as informações de alguma data em específico está com alguma falha, nesses casos recomendo fazer os testes unitários apenas para isolar o problema e tentar resolver.

Abraços.

Opa Alex,

Consegui resolver o problema. Obrigado pela dica.

Eu estava setando a variavel da data e outras mais, fora do contexto do @RequestMapping("/")

Abs