繁体   English   中英

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

[英]How to launch a Spring Batch job after startup?

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

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

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

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

检查aroud Spring代码我找到了SmartLifecycle

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

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

关于放置启动逻辑的地方,我可以考虑几个选项:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM