почему компилятор не принимает выражение cron

alert.widow.schedule=0 0 0 1 * ? *
@Scheduled(cron = "${alert.widow.schedule}")
public void refreshAlertWidowTable() {

        widowService.findByActiveAndExclusion(true, false)
                .stream()
                .filter(w -> testAdult(w))
                .collect(Collectors.toList())
                .forEach(w -> this.save(new AlertWidow(w, false, LocalDateTime.now())));
}

Инициализация bean-компонента не удалась; вложенным исключением является java.lang.IllegalStateException: обнаружен недопустимый метод @Scheduled 'refreshAlertWidowTable': выражение Cron должно состоять из 6 полей (найдено 7 в «0 0 0 1 * ? *»)


person Sarra    schedule 09.09.2019    source источник
comment
Ошибка говорит вам, что именно с ней не так. Cron expression must consist of 6 fields (found 7 in "0 0 0 1 * ? *").   -  person M. Deinum    schedule 09.09.2019
comment
но я использовал бесплатный генератор для создания этого выражения. Я хочу писать выражение каждый год, например, он пишет это так: alert.widow.schedule=0 0 0 1 JAN? 2020/1 та же проблема исчезла   -  person Sarra    schedule 09.09.2019
comment
В любом случае это неправильно. Spring принимает выражение cron длиной 6, а не длиной 7.   -  person M. Deinum    schedule 09.09.2019


Ответы (1)


Из https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/scheduling/support/CronSequenceGenerator.html

Шаблон представляет собой список из шести отдельных полей, разделенных пробелами: секунды, минуты, часы, день, месяц, день недели. Названия месяца и дня недели могут быть даны как первые три буквы английских названий.

У вас есть 7 записей. Вы, вероятно, добавили год, который не поддерживается весной. Пытаться:

alert.widow.schedule=0 0 0 1 * ?

person f.khantsis    schedule 09.09.2019
comment
Вы имеете в виду, что я не могу написать выражение «каждый год»? - person Sarra; 09.09.2019
comment
По-видимому, Spring не поддерживает выражение года в cron. Он автоматически предполагается каждый год. - person f.khantsis; 09.09.2019