通过使用@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 |
其中最后一位 年 可以省略,且 天 和 周 因为都是表示的一个月里面的第几天,所以说会出现冲突,在两者的任意一个中使用"?
"来表示根据另外的一个设定来决定具体是哪一天任务触发。
网友评论