[英]How to launch a Spring Batch job after startup?
如何在应用程序启动后立即运行使用Spring-Batch
配置的作业?
目前我正在使用cron job指定一个确切的时间,但是每次重新启动应用程序时都需要更改cron:
@JobRegistry
, @Joblauncher
和Job
。 我按如下方式执行工作:
@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.