@scheduled注释如何在Spring Boot中工作

时间:2018-03-09 10:51:28

标签: java spring spring-boot

我有一个Spring Boot应用程序,其中有一个类有两种方法,如下所示。

@Component
public class ClassA {
  @Scheduled(fixedDelay = 900000)
  public void methodA(){
    //do task "A"
  }

 @Scheduled(fixedDelay = 600000)
 public void methodB(){
    //do task "B"
 }

}

根据我的理解方法,A应每15分钟执行一次,methodB应每10分钟执行一次。但是一旦应用程序启动,就会调用这些作业。这是正确的行为吗?如果是,那么如何在应用程序启动后立即停止执行它们并在方法A之后运行methodB?

1 个答案:

答案 0 :(得分:3)

形成文档:Scheduled (Spring Framework 5.0.4.RELEASE API)

  

fixedDelay :执行带有固定句点的带注释的方法   最后一次调用结束与开始之间的毫秒数   下一个。

你想要的是

  

<强>在initialDelay :   在第一个之前延迟的毫秒数   执行fixedRate()或fixedDelay()任务。