spring中的设置定时任务工具--springtask

Spring Task

Spring Task是Spring框架提供达到任务调度工具,可按照约定时间自动执行某个代码逻辑

使用步骤

样例

在方法体上使用注解

java 复制代码
/**
 * 处理超时订单的方法
 */
@Scheduled(cron = "0 * * * * ?") //每分钟触发一次
public void processTimeoutOrder(){
    Log.info("定时处理超时订单:{}", LocalDateTime.now());

    LocalDateTime time = LocalDateTime.now().plusMinutes(-15);

    // select * from orders where status = ? and order_time < (当前时间 - 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);
        }
    }
}

cron表达式

在线生成器网址 https://cron.qqe2.com/

cron 表达式是一个字符串,用于定义任务触发的时间。

构成规则
  • 分为 6 或 7 个域,由空格分隔,每个域代表一个含义
  • 各域含义(从左到右):秒、分钟、小时、日、月、周、年(年为可选)
示例对应关系
秒 分钟 小时 日 月 周 年
0 0 9 12 10 ? 2022

对应触发时间:2022 年 10 月 12 日上午 9 点整

对应的 cron 表达式:0 0 9 12 10 ? 2022

相关推荐
奇牙coding3 小时前
Codex CLI 升级后多文件编辑静默失效:config.yaml 枚举变更排查与修复指南
java·前端·javascript·ai
小羊没烦恼!3 小时前
Ajax与JSON的一些总结
android·java·前端·数据库·mysql·算法·okhttp
Lhappy嘻嘻3 小时前
读懂 JVM:内存模型、类加载机制、分代回收
java·开发语言·jvm
黄俊懿3 小时前
【架构师从入门到进阶】第六章:服务集群优化——第八节:线程数公式
java·服务器·数据库·分布式·性能优化·架构·系统架构
Rain的Java大神之路3 小时前
别再死磕 MySQL 了:向量数据库与 RAG 生产落地实录(Java 工程师专场)
java·后端·面试
七夜zippoe3 小时前
Spring AI 是什么?Java 工程师的 AI 开发第一站
java·人工智能·spring·ai·开发
是真的小外套3 小时前
2023年软考中级信息安全工程师|选择题考点+5道案例分析真题解析(含答案)
java·服务器·网络
会编程的吕洞宾4 小时前
Spring AI 2.0 结构化输出实战:让大模型返回精准 JSON 不再“抽风“,准确率从 78% 拉到 99%
java·后端
项目題供诗4 小时前
ai大模型(三)
java
wangjialelele4 小时前
一文梳理 Spring Cloud 核心组件:Eureka、Nacos、OpenFeign、LoadBalancer 与 Gateway
java·spring boot·spring·spring cloud·微服务·nacos