介绍
Spring Task 是Spring框架提供的任务调度工具,可以按照约定时间自动执行某个代码逻辑。
定位:定时任务框架
作用:定时自动执行某段Java代码
cron表达式
cron表达式其实就是一个字符串,通过cron表达式可以定义任务触发时间。
构成规则:分为六个或七个域,由空格分隔开,每个域代表一个含义。
每个域的含义为:秒,分钟,小时,日,月,周,年(可选)。
注意:日和周不能同时存在,因为你不确定那一年的第几周是第几天。
cron表达式我们可以在网站上生成。在浏览器上搜索:cron表达式生成器就可以在里面自行操作。
Spring Task使用步骤
1、导入maven坐标spring-context
此框架已经被包含在spring-boot-starter里面了只用导入这个maven坐标即可。
2、在启动类里面添加注解@EnableScheduling开启任务调度。
3、自定义定时任务类
例子:
@Scheduled(cron = "0 * * * * ?")//每分钟执行一次
public void processTimeoutOrder(){
log.info("处理超时订单,{}", LocalDateTime.now());
LocalDateTime time = LocalDateTime.now().plusMinutes(-15);
List<Orders> ordersList = orderMapper.getByStatusAndOrderTimeLT(Orders.PENDING_PAYMENT, time);
if (ordersList != null && ordersList.size() > 0) {
for (Orders orders : ordersList) {
orders.setStatus(Orders.CANCELLED);
orders.setCancelReason("超时未支付,订单自动取消");
orders.setCancelTime(LocalDateTime.now());
orderMapper.update(orders);
}
}
}