Как запустить задание, настроенное с помощью Spring-Batch
сразу после запуска приложения?
В настоящее время я указываю точное время с использованием задания cron, но это требует изменения cron каждый раз, когда я перезапускаю приложение:
@JobRegistry
, @Joblauncher
и Job
. Я выполняю задание следующим образом:
@Scheduled(cron = "${my.cron}")
public void launch() {
launcher.run(job, params);
}
Проверка кода aroud Spring Я нашел SmartLifecycle
Расширение интерфейса Lifecycle для тех объектов, которые должны запускаться при обновлении и/или завершении ApplicationContext в определенном порядке. Возвращаемое значение isAutoStartup() указывает, должен ли этот объект запускаться во время обновления контекста.
Попробуйте создать пользовательский компонент, реализующий SmartLifecycle
и устанавливающий autoStartup
; когда этот пользовательский метод запуска бэка вызывается, запустите свою работу.
Несколько вариантов, которые я могу придумать на местах, чтобы поставить логику запуска:
0,1. В аннотированном методе компонента @PostConstruct
ссылка здесь - http://docs.spring.io/spring/docs/current/spring-framework-reference/html/beans.html#beans-postconstruct-and-predestroy-annotations
0,2. Внедряя ApplicationListener, специально для ContextStartedEvent или ContextRefreshedEvent. Ссылка здесь - http://docs.spring.io/spring/docs/current/spring-framework-reference/html/beans.html#context-functionality-events
launcher.run()
в ваш метод main ()?