如何在启动后启动Spring Batch作业?

时间:2014-08-05 11:16:06

标签: java spring spring-batch

如何在应用程序启动后立即运行使用Spring-Batch配置的作业?

目前我正在使用cron job指定一个确切的时间,但是每次重新启动应用程序时都需要更改cron:

@JobRegistry@JoblauncherJob。 我按如下方式执行工作:

@Scheduled(cron = "${my.cron}")
public void launch() {
    launcher.run(job, params);
}

2 个答案:

答案 0 :(得分:2)

检查aroud Spring代码我找到了SmartLifecycle

  

对于那些需要的对象,Lifecycle接口的扩展   在ApplicationContext刷新和/或关闭时启动   特别的顺序。 isAutoStartup()返回值表示是否   该对象应该在上下文刷新时启动。

尝试创建实现SmartLifecycle并设置autoStartup的自定义bean;当调用这个自定义bean启动方法时,启动你的工作。

答案 1 :(得分:1)

我可以考虑一些关于放置启动逻辑的地方的选项:

0.1。在bean @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