Spring定时任务
2020-11-17 本文已影响0人
小菜鸡
通过使用@EnableScheduling和@Scheduled两个注解就可以简单的设置定时任务了,另外使用@Component注解,因为我觉得它不是一个@Service,代码:
@Component
@EnableScheduling
public class UpdateTask {
private static final Logger logger = LoggerFactory.getLogger(UpdateTask.class);
/*cron = second minute hour day month week
*check the data version at the first day per month
* */
@Scheduled(cron = "0 0 0 1 * ?")
public void checkDisGeNETDataVersion() {
if (hasNewDataVersion()) {
logger.info("Find new data version. "+ LocalTime.now());
if (doDataUpdate()) {
logger.warn("Failed to update data.");
}
}
}
}
使用的是@Component注解,因为我觉得它不是一个@Service。
然后看一下@Scheduled(cron="")参数的示例:
| 秒 | 分 | 时 | 天 | 月 | 周 | 年 | cron | 触发时间 |
|---|---|---|---|---|---|---|---|---|
| 0 | 0 | 12 | * | * | ? | 0 0 12 * * ? |
每天中午12点 | |
| 0 | 15 | 10 | ? | * | * | 0 15 10 ? * * |
每天上午10:15 |
其中最后一位 年 可以省略,且 天 和 周 因为都是表示的一个月里面的第几天,所以说会出现冲突,在两者的任意一个中使用"?"来表示根据另外的一个设定来决定具体是哪一天任务触发。