繁体   English   中英

如何在启动时在Spring Java应用程序中计划作业

[英]How to Schedule a job in a spring java application on startup

我的spring网络应用程序启动后,我想安排一些工作。 我尝试将ApplicationListenerContextStartedEvent使用,但从未被触发。

我知道,由于bean的延迟初始化,因此无法确定在启动后立即将其触发。 因此,我尝试使用ContextRefreshedEvent并注意到它在启动时被多次触发,这导致该作业被调度了多次。 因此,我不确定在以下情况下执行此操作的最佳方法是什么。

  1. 计划应在应用程序初始化后立即进行。
  2. 它应该只发生一次。

尝试ApplicationPreparedEvent 以下是您可以使用的其他事件的详细信息。

  1. ApplicationStartingEvent在运行开始时发送,但在进行任何处理之前(侦听器和初始化程序的注册除外)发送。
  2. 当已知要在上下文中使用的环境但在创建上下文之前,将发送ApplicationEnvironmentPreparedEvent
  3. 在刷新开始之前但在加载bean定义之后发送ApplicationPreparedEvent
  4. 在刷新上下文之后但在调用任何应用程序和命令行运行程序之前,将发送ApplicationStartedEvent
  5. 在调用任何应用程序和命令行运行程序之后,将发送ApplicationReadyEvent 它表明该应用程序已准备好服务
  6. 如果启动时发生异常,则发送ApplicationFailedEvent

更多参考: https : //docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-application-events-and-listeners

暂无
暂无

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

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