如何在应用程序启动后立即运行使用Spring-Batch
配置的作业?
目前我正在使用cron job指定一个确切的时间,但是每次重新启动应用程序时都需要更改cron:
@JobRegistry
,@Joblauncher
和Job
。
我按如下方式执行工作:
@Scheduled(cron = "${my.cron}")
public void launch() {
launcher.run(job, params);
}
答案 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