Spring cron выражение для каждого дня 1: 01: am
Я пытаюсь выполнить мой код в фиксированном расписании на основе выражения cron. Я хотел бы, чтобы код выполнялся каждый день в 1: 01: am. Я попробовал следующее выражение, но это не срабатывало для меня. Что не так с синтаксисом здесь?
@Scheduled(cron = "0 1 1 ? * *")
public void resetCache() {
// ...
}
Ответы
Ответ 1
Попробуйте:
@Scheduled(cron = "0 1 1 * * ?")
Ниже вы можете найти пример шаблона на форуме spring:
* "0 0 * * * *" = the top of every hour of every day.
* "*/10 * * * * *" = every ten seconds.
* "0 0 8-10 * * *" = 8, 9 and 10 o'clock of every day.
* "0 0/30 8-10 * * *" = 8:00, 8:30, 9:00, 9:30 and 10 o'clock every day.
* "0 0 9-17 * * MON-FRI" = on the hour nine-to-five weekdays
* "0 0 0 25 12 ?" = every Christmas Day at midnight
Выражение Cron представлено шестью полями:
second, minute, hour, day of month, month, day(s) of week
(*)
означает соответствие любому
*/X
означает "каждый X"
?
( "no specific value" ) - полезно, когда вам нужно указать что-то в одном из двух полей, в которых разрешен символ, но не другой. Например, если я хочу, чтобы мой триггер срабатывал в определенный день месяца (например, 10-й), но мне все равно, в какой день недели это произойдет, я бы поставил "10" в день -месячное поле и "?" в поле дня недели.
PS: чтобы он работал, не забудьте включить его в контексте вашего приложения: https://docs.spring.io/spring/docs/3.2.x/spring-framework-reference/html/scheduling.html#scheduling-annotation-support
Ответ 2
Для моего планировщика я использую его для стрельбы в 6 часов утра каждый день, и мои записи в формате cron:
0 0 6 * * *
Если вы хотите 1: 01: am, установите его на
0 1 1 * * *
Полный код для планировщика
@Scheduled(cron="0 1 1 * * *")
public void doScheduledWork() {
//complete scheduled work
}
** ОЧЕНЬ ВАЖНО
Чтобы быть уверенным в правильности времени стрельбы вашего планировщика, вы должны установить значение зоны как это (я нахожусь в Стамбуле):
@Scheduled(cron="0 1 1 * * *", zone="Europe/Istanbul")
public void doScheduledWork() {
//complete scheduled work
}
Здесь вы можете найти полные значения часовых поясов от .
Примечание. Модная версия Spring: 4.0.7.RELEASE
Ответ 3
Вы можете использовать аннотацию своего метода с помощью @Scheduled(cron ="0 1 1 * * ?")
.
0 - в секундах
1- 1 минута
1 час дня.
Ответ 4
Что-то не хватает из ответа Гипинани
@Scheduled(cron = "0 1 1,13 * * ?", zone = "CST")
Это будет выполняться в 1.01 и 13.01. Его можно использовать, когда вам нужно запускать задание без шаблона несколько раз в день.
И атрибут зоны очень полезен, когда вы выполняете развертывание на удаленных серверах. Это было введено с помощью spring 4.
Ответ 5
Одна вещь, которую я заметил: spring CronTrigger не cron. Вы можете получить 7 параметров в действительном выражении cron (которое вы можете проверить на cronmaker.com), а затем spring не принять его. В большинстве случаев вы просто удаляете последний параметр, и все работает нормально.