При использовании возможности Spring 3.0 для аннотирования запланированной задачи я хотел бы установить fixedDelay
параметр as из моего файла конфигурации, вместо того, чтобы жестко связывать его с моим классом задачи, как в настоящее время ...
@Scheduled(fixedDelay = 5000)
public void readLog() {
...
}
К сожалению, кажется, что средства Spring Expression Language (SpEL) @Value
возвращают объект String, который, в свою очередь, не может быть автоматически упакован в длинное значение, как того требует fixedDelay
параметр.
Spring v3.2.2 добавил параметры String к исходным 3 длинным параметрам, чтобы справиться с этим.
fixedDelayString
,fixedRateString
иinitialDelayString
теперь тоже доступны.источник
Вы можете использовать
@Scheduled
аннотацию, но только вместе сcron
параметром:Ваш 5-секундный интервал можно выразить как
"*/5 * * * * *"
. Однако, насколько я понимаю, вы не можете обеспечить точность менее 1 секунды.источник
В Spring Boot 2 мы можем использовать Spring Expression Language (SpPL) для
@Scheduled
свойств аннотации:application.properties
Файл будет выглядеть следующим образом :Вот и все. Вот статья , в которой подробно объясняется планирование задач.
источник
Я думаю, вы можете преобразовать значение самостоятельно, определив bean. Я этого не пробовал , но полагаю, что вам может быть полезен подход, подобный следующему:
где:
источник
@Scheduled
аннотацией этого не сделать .