Это может быть связано с настройкой часового пояса. Какой часовой пояс по умолчанию вашего хоста? Попробуйте запустить System.out.println(TimeZone.getDefault())
для проверки.
Если часовой пояс по умолчанию не поддерживает DST (например, UTC), вы можете установить правильный часовой пояс для всей JVM, передав системное свойство:
-Duser.timezone=Europe/Kiev
Кроме того, вы можете указать часовой пояс для запланированной задачи напрямую.
К сожалению, Spring Task XSD не имеет свойства для определения часового пояса (http://www.springframework.org/schema/task/spring-task-4.3.xsd).
Но вы можете использовать аннотации. Начиная с Spring 4, аннотация @Scheduled
имеет новый атрибут zone
(https://docs.spring.io/spring/docs/current/spring-framework-reference/integration.html#scheduling-annotation-support-scheduled):
. Вы также можете использовать атрибут zone
, чтобы указать часовой пояс. в котором разрешено выражение cron.
@Scheduled(cron="*/5 * * * * MON-FRI", zone="Europe/Kiev")
public void doSomething() {
// something that should execute on weekdays only
}