Как запустить Spring Batch после запуска?

1

Как запустить задание, настроенное с помощью Spring-Batch сразу после запуска приложения?

В настоящее время я указываю точное время с использованием задания cron, но это требует изменения cron каждый раз, когда я перезапускаю приложение:

@JobRegistry, @Joblauncher и Job. Я выполняю задание следующим образом:

@Scheduled(cron = "${my.cron}")
public void launch() {
    launcher.run(job, params);
}
  • 0
    попробуй проверить Spring LifecycleProcessor
  • 0
    Не могли бы вы просто поместить команду launcher.run() в ваш метод main ()?
Показать ещё 1 комментарий
Теги:
spring
spring-batch

2 ответа

2
Лучший ответ

Проверка кода aroud Spring Я нашел SmartLifecycle

Расширение интерфейса Lifecycle для тех объектов, которые должны запускаться при обновлении и/или завершении ApplicationContext в определенном порядке. Возвращаемое значение isAutoStartup() указывает, должен ли этот объект запускаться во время обновления контекста.

Попробуйте создать пользовательский компонент, реализующий SmartLifecycle и устанавливающий autoStartup; когда этот пользовательский метод запуска бэка вызывается, запустите свою работу.

1

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню