Spring: указание свойства cron в @Scheduled из выражения SPEL в Spring 4.1.3

Рассмотрим следующий код:

@Scheduled(cron = "#{@returnCron}")
public void foo(){
    someJob.do();
}

@Bean
public String returnCron(){
    return "0 /5 * * * *"; // ideally, from the properties file or system variable
}

В Spring 4.1.3, который я использую, Scheduled аннотация, похоже, не поддерживает заполнители для атрибута cron (я предполагаю, что именно поэтому возникает ошибка приходящий). В текущая версия однако в документе указано, что она поддерживает заполнители.

Как заставить SPEL работать в атрибуте cron в Spring 4.1.3? В общем, как внедрить выражение cron, если заполнители не поддерживаются?

Моя ошибка:

Cron expression must consist of 6 fields (found 1 in "#{@returnCron}")

person Daud    schedule 22.08.2019    source источник


Ответы (1)


Тем не менее */5 такой же, как /5, он работает с 0 */5 * * * *. Пожалуйста, попробуй :

Файл свойств:

cronExpression=0 */5 * * * *

Запланированный метод:

@Component
public class Scheduler {

    @Scheduled(cron = "${cronExpression}")
    private void testSchedule() {
        System.out.println("Hello");
    }
}
person zpavel    schedule 22.08.2019
comment
Мой вопрос касался использования SpEL внутри атрибута cron и того, как мы можем его использовать, если заполнители не поддерживаются в используемой мной версии (Spring 4.1.3) - person Daud; 22.08.2019