Ao usar o recurso Spring 3.0 para anotar uma tarefa agendada, eu gostaria de definir o fixedDelay
parâmetro as do meu arquivo de configuração, em vez de conectá-lo à minha classe de tarefa, como atualmente ...
@Scheduled(fixedDelay = 5000)
public void readLog() {
...
}
Infelizmente, parece que com os meios da Spring Expression Language (SpEL) @Value
retorna um objeto String que, por sua vez, não pode ser encaixotado automaticamente em um valor longo, conforme exigido pelo fixedDelay
parâmetro.
O Spring v3.2.2 adicionou parâmetros de String aos 3 parâmetros longos originais para lidar com isso.
fixedDelayString
,fixedRateString
einitialDelayString
agora também estão disponíveis.fonte
Você pode usar a
@Scheduled
anotação, mascron
apenas com o parâmetro:Seu intervalo de 5 segundos pode ser expresso como
"*/5 * * * * *"
. No entanto, pelo que entendi, você não pode fornecer menos de 1 segundo de precisão.fonte
No Spring Boot 2, podemos usar o Spring Expression Language (SpPL) para
@Scheduled
propriedades de anotação:O
application.properties
arquivo ficará assim:É isso aí. Aqui está um artigo que explica o agendamento de tarefas em detalhes.
fonte
Eu acho que você pode converter o valor você mesmo definindo um bean. Eu não tentei isso , mas acho que uma abordagem semelhante à seguinte pode ser útil para você:
Onde:
fonte
@Scheduled
anotação então.