Spring Scheduling - выражение Cron для повседневной работы в полночь не работает?

Я пытаюсь запланировать задачу на весну, которая должна выполняться каждый день в полночь. Я следовал официальному руководству Spring и создал класс планировщика, как показано ниже:

@Component
    public class OverduePaymentScheduler {    

        @Scheduled(cron = "0 0 0 * * *")
        public void trackOverduePayments() {

              System.out.println("Scheduled task running");

        }
    }

Однако задача не запускается, когда часы бьют 12:00. Я получил выражение cron из документации по кварцевому планировщику по этой ссылке.

Планировщик выполняется нормально, если я изменяю выражение cron на "*/10 * * * * *", которое выполняется каждые десять секунд.

Так что я делаю не так?

Ответ 1

Я, наконец, получил его для работы с этим выражением cron 0 0 0 * * * но мне нужно было установить часовой пояс в классе планировщика, как это. @Scheduled(cron = "0 0 0 * * *",zone = "Indian/Maldives")

Ответ 2

Это допустимые форматы для выражений cron:

  • 0 0 * * * *= начало каждого часа каждого дня.
  • */10 * * * * *= каждые десять секунд.
  • 0 0 8-10 * * *= 8, 9 и 10 часов каждого дня.
  • 0 0 6,19 * * *= 6:00 и 19:00 каждый день.
  • 0 0/30 8-10 * * *= 8:00, 8:30, 9:00, 9:30, 10:00 и 10:30 каждый день.
  • 0 0 9-17 * * MON-FRI= в рабочие часы с девяти до пяти
  • 0 0 0 25 12? = каждый Рождество в полночь

Шаблон является:

second, minute, hour, day, month, weekday

Итак, ваш ответ:

0 0 0 * * *

Ответ 3

Пожалуйста, используйте ниже шаблон cron для 12:00 AM каждый день:

    // at 12:00 AM every day
    @Scheduled(cron="0 0 0 * * ?")

Я проверил ваш шаблон cron на этом сайте: http://www.cronmaker.com/.

Он говорит, что шаблон 0 0 0 * * * неверен.

Ответ 4

Вы можете использовать формат ниже, чтобы удовлетворить ваши требования:

0 0 23 * * *

Так как часы начинаются с 0 до 23 для кварцевой конфигурации. Вы можете обратиться по этой ссылке для получения дополнительной информации.

Ответ 5

его (ум-ночь каждый день)

0 0 0 * * *