Spring Task介绍
Spring Task 是 Spring 框架提供的一种轻量级的定时任务解决方案,可以按照约定时间自动执行某个代码逻辑。它主要用于在 Spring 应用程序中执行定时任务,提供了一种声明式的方式来配置和执行这些任务。Spring Task 支持通过注解和配置文件来定义任务的执行计划,使得任务调度变得简单和直观。
主要特点
- 声明式配置:使用 @Scheduled 注解可以轻松地将方法声明为定时任务。
- 集成 Spring 生态:与 Spring 的其他组件(如 Spring Beans 和 Spring AOP)紧密集成。
- 灵活的任务调度:支持多种调度策略,包括基于 cron 表达式的复杂调度和简单的固定延迟或固定率调度。
- 异常处理:提供了灵活的异常处理机制,可以对任务执行中的异常进行捕获和处理。
- 日志记录:集成了 Spring 的日志框架,方便记录任务的执行信息和状态。
作用:定时自动执行某段Java代码
应用场景:
- 信用卡每月还款提醒
- 银行贷款每月还款提醒
- 火车票售票系统处理未支付订单
- 入职纪念日为用户发送通知
cron表达式
- cron表达式其实就是一个字符串,通过cron表达式可以定义任务触发的时间
- 构成规则:分为6或7个域,由空格分隔开,每个域代表一个含义
- 每个域的含义分别为:秒、分钟、小时、日、月、周、年(可选)
比如:
2022年10月12日上午9点整对应的cron表达式为:0 0 9 12 10 ? 2022
想要手写cron表达式还是比较困难的,推荐使用cron表达式在线生成器:https://cron.qqe2.com/
Spring Task使用步骤:
- 导入maven坐标spring-context(已存在)
- 启动类添加注解 @EnableScheduling开启任务调度
- 自定义定时任务类
如下图所示:在具体需要定时处理的方法上添加@Scheduled(cron = "0/5 * * * * ? ")注解并设置cron表达式
当前cron表达式设置的是每五秒执行一次