在Java中定期运行任务的更好方法

时间:2017-11-17 13:14:30

标签: java spring unix cron

我有一个方法,我想定期调用:每天上午11点。这是Main中的一个简单方法:

public void loadProduct() {
PropertyConfigurator.configure("log4j.properties");
try {
     service.create(product);
     logger.info("Creation started");
} catch (Exception e) {
  // Log Exception
     logger.error(e);
}
}

我几乎想出了如何在Spring上下文的帮助下实现这一目标:

<task:scheduler id="scheduler" pool-size="1"/>

<task:scheduled-tasks scheduler="scheduler">
    <task:scheduled ref="productTask" method="loadProduct" cron="0/30 * * * * *"/>
</task:scheduled-tasks>

但是如何安排任务每天上午11点每24小时开始一次?

或者有没有办法在Java代码中实现这一目标?

1 个答案:

答案 0 :(得分:2)

  

但是如何安排任务每天上午11点每24小时开始一次?

这可以通过使用cron表达式来实现:0 0 11 * * *

  

或者有没有办法在Java代码中实现这一目标?

是的,使用Scheduled (Spring Framework 5.0.1.RELEASE API)注释,例如:

@Scheduled(cron = "0 0 11 * * *", zone = "Europe/Moscow")
public void run() {
    // ...
}

其他参考资料:

  1. Integration: 7. Task Execution and Scheduling: 7.4. Annotation Support for Scheduling and Asynchronous Execution, Spring Framework Documentation
  2. Getting Started · Scheduling Tasks
相关问题