Spring Task
介绍


cron表达式

使用

java
/**
* 自定义定时任务类
*/
@Component
@Slf4j
public class MyTask {
/**
* 测试定时任务
*/
@Scheduled(cron = "0/5 * * * * ? ")
public void myTask(){
log.info("定时任务开始执行:{}",new Date());
}
}
实例
定时处理订单状态
java
/**
* 订单状态定时任务
*/
@Component
@Slf4j
public class OrderTask {
@Autowired
private OrderMapper orderMapper;
/**
* 处理超时订单
*/
@Scheduled(cron = "0 * * * * ? ")
public void processTimeoutOrder() {
log.info("处理超时订单:{}", LocalDateTime.now());
List<Orders> orderlist = orderMapper.getByStatusAndOrderTime(Orders.PENDING_PAYMENT,
LocalDateTime.now().plusMinutes(-15));
if(orderlist != null && orderlist.size() > 0){
List<Long> ids = orderlist.stream().map(x->{
return x.getId();
}).collect(Collectors.toList());
orderMapper.updateStatusCancelByIds(ids, Orders.CANCELLED,MessageConstant.ORDER_PAYMENT_TIMEOUT,LocalDateTime.now());
}
}
/**
* 处理一直派送订单
*/
@Scheduled(cron = "0 0 1 * * ? ")
public void processCompletionOrder() {
log.info("定时处理派送订单:{}", LocalDateTime.now());
List<Orders> orderlist = orderMapper.getByStatusAndOrderTime(Orders.DELIVERY_IN_PROGRESS,
LocalDateTime.now().plusMinutes(-60));
if(orderlist != null && orderlist.size() > 0){
List<Long> ids = orderlist.stream().map(x->{
return x.getId();
}).collect(Collectors.toList());
orderMapper.updateStatusCompletedByIds(ids, Orders.COMPLETED,LocalDateTime.now());
}
}
}