Насколько мне известно, вы не можете использовать CronTrigger
Spring для запуска только с определенной даты.
Синтаксис Cron не поддерживает ежедневный запуск чего-либо с произвольной даты;он поддерживает EITHER , выполняющий что-то ежедневно ИЛИ , выполняющийся один раз в произвольную дату - но не оба одновременно.Это означает, что вы можете использовать два триггера: установить один триггер cron для запуска в начальную дату;затем создайте новый суточный триггер, когда этот первый триггер произойдет.
Однако это работает правильно только в том случае, если используемый вами триггер хрон поддерживает годы, например, Quartz имеет поле опционного года в триггере хрон.Весенний CronTrigger
не поддерживает годы.Поэтому, если вы попытаетесь запланировать что-то на определенную дату (скажем, 0 0 12 26 1 ?
на полдень в день Австралии), то это будет выполняться каждый год, а не один раз, вызывая создание дублирующих триггеров каждый год.Я рекомендую создать простой триггер для ежедневного запуска, а именно:
Trigger trigger = new CronTrigger("0 0 12 * * ?);
Таким образом, ваш код будет выполняться ежедневно.Затем добавьте в свой код простую проверку даты: если вы еще не достигли даты начала, пропустите задание, например:
if ((new Date()).after(startDate)) {
// Run your task here
}