后端学习笔记-Spring Task

Spring Task

介绍

cron表达式

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());
        }
    }
}
相关推荐
颜安青9 分钟前
深度学习Pytorch下载推荐(笔记,仅记录学习)
pytorch·笔记·深度学习
小弥儿15 分钟前
GitHub今日热榜 | 2026-09-01:迷你小模型登场
学习·microsoft·开源·github
高亦真20 分钟前
今天是学习嵌入式的第33天
linux·学习·算法
在线考试系统推荐44 分钟前
拆成多道小题,优考试“理解题“怎么用?
服务器·人工智能·学习
2301_802651081 小时前
linux系统的学习:网络
linux·网络·学习
xieliyu.1 小时前
计算机网络|数据链路层详解:MAC 地址、交换机、ARP 协议、CRC 校验
java·网络·笔记·计算机网络·java-ee
zyf1044161 小时前
暑期实践日志 Day44:梳理剪辑实践成果,进行学习总结
学习·计算机网络·剪辑·暑期实践·课题任务
ouynagda1 小时前
Linux Socket 网络编程学习笔记
linux·网络·学习
我爱cope1 小时前
【计算机网络 | 网络层12:SDN:控制平面与数据平面分离意味着什么?】
网络·学习·计算机网络·平面
优化Henry1 小时前
5G网络切片之S-NSSAIlist相关参数解析
运维·服务器·网络·笔记·学习·信息与通信