上海嘉定网站,打开网站提示建设中,wordpress是用什么开发的,网站备案需要多少时间Spring Task 是 Spring 提供的一种轻量级定时任务调度功能#xff0c;内置在 Spring 框架中。与 Quartz 等重量级调度框架相比#xff0c;Spring Task 使用简便#xff0c;无需额外依赖#xff0c;适合在简单的调度任务场景中使用。通过注解配置方式#xff0c;开发者可以…Spring Task 是 Spring 提供的一种轻量级定时任务调度功能内置在 Spring 框架中。与 Quartz 等重量级调度框架相比Spring Task 使用简便无需额外依赖适合在简单的调度任务场景中使用。通过注解配置方式开发者可以快速实现周期性任务执行非常适合 Spring Boot 项目中的定时任务需求。
1. 介绍
Spring Task 是Spring框架提供的任务调度工具可以按照约定的时间自动执行某个代码逻辑。
简介Spring Task 提供了 Scheduled 注解通过此注解可以为方法添加定时任务实现任务调度。使用场景需要定时处理的场景都可以使用Spring Task 。主要特性 简单配置只需简单的注解配置使用方便。支持多种时间表达式支持固定速率执行、固定延迟执行和 Cron 表达式调度。灵活性可配合 Spring Boot 的配置文件实现动态任务调度。
2. 使用步骤
2.1 引入依赖
Spring Task 是 Spring 框架的内置功能在 Spring Boot 项目中无需额外依赖仅需在主启动类中启用定时任务。
2.2 启用定时任务
在 Spring Boot 项目主启动类中通过 EnableScheduling 注解启用定时任务调度。
SpringBootApplication
EnableScheduling // 启用定时任务功能
public class TaskApplication {public static void main(String[] args) {SpringApplication.run(TaskApplication.class, args);}
}2.3 使用 Scheduled 注解定义定时任务
Scheduled 注解用于声明一个方法为定时任务可以配置不同的时间策略
fixedRate以固定频率执行任务开始到下次任务开始的时间间隔固定单位为毫秒。fixedDelay以固定延迟执行任务结束到下次任务开始的时间间隔固定单位为毫秒。cron使用 Cron 表达式支持更精细的调度。
3. Scheduled 注解的属性详解
3.1 cron 属性
cron表达式在线生成器在线Cron表达式生成器
ron表达式其实就是一个字符串通过cron表达式可以定义任务触发的时间
构成规则分为6或7个域由空格分隔开每个域代表一个含义
作用使用 Cron 表达式来控制任务的执行时间支持精确的时间控制。Cron 表达式结构秒 分 时 日 月 星期 [年]示例任务在每天上午 10:00 执行一次。
Scheduled(cron 0 0 10 * * ?)
public void cronTask() {System.out.println(Cron task executed at LocalDateTime.now());
}*表示任意值例如 * 表示每分钟。?仅用于“日”和“星期”字段表示不指定具体的值。-表示范围如 10-12 表示 10 点到 12 点。,表示列出多个值如 MON,WED,FRI 表示星期一、三、五。/表示增量如 0/5 表示从 0 开始每隔 5 个单位。L用于“日”和“星期”字段表示最后一天或最后一个星期几。W用于“日”字段表示离指定日期最近的工作日。#用于“星期”字段表示第几个星期几如 4#2 表示每月第 2 个星期三。
说明一般日和周的值不同时设置其中一个设置另一个用表示。
3.2 fixedRate 属性
作用设置任务的固定频率单位毫秒任务开始到下次任务开始的时间间隔固定。示例任务每隔 5 秒执行一次无论上一次任务是否完成都会在指定的时间间隔后再次执行。
Scheduled(fixedRate 5000)
public void fixedRateTask() {System.out.println(Fixed rate task executed at LocalDateTime.now());
}3.3 fixedDelay 属性
作用设置任务的固定延迟单位毫秒上一次任务结束到下次任务开始的时间间隔固定。示例任务在上一次任务结束后延迟 5 秒再执行一次。
Scheduled(fixedDelay 5000)
public void fixedDelayTask() {System.out.println(Fixed delay task executed at LocalDateTime.now());
}4. Spring Task 定时任务案例
4.1 创建定时任务类
在 MyTask中定义各种类型的定时任务方法使用 Scheduled 注解指定任务的执行策略。
/*** 自定义定时任务类*/
Component
Slf4j
public class MyTask{// 每5秒执行一次任务Scheduled(fixedRate 5000)public void fixedRateTask() {System.out.println(Fixed rate task executed at LocalDateTime.now());}// 上一次任务结束后延迟5秒再执行任务Scheduled(fixedDelay 5000)public void fixedDelayTask() {System.out.println(Fixed delay task executed at LocalDateTime.now());}// 每天上午10:00执行任务Scheduled(cron 0 0 10 * * ?)public void cronTask() {System.out.println(Cron task executed at LocalDateTime.now());}
}4.2 配置动态化定时任务时间
Spring Task 的默认时间配置在注解中直接设置但也可以从配置文件读取定时任务的时间增加动态配置的灵活性。
# application.properties
task.fixed-rate5000
task.fixed-delay5000
task.cron-expression0 0 10 * * ?在 MyTask中使用 Value 注解读取配置文件中的值。
/*** 自定义定时任务类*/
Component
Slf4j
public class MyTask{Scheduled(fixedRateString ${task.fixed-rate})public void fixedRateTask() {System.out.println(Dynamic fixed rate task executed at LocalDateTime.now());}Scheduled(fixedDelayString ${task.fixed-delay})public void fixedDelayTask() {System.out.println(Dynamic fixed delay task executed at LocalDateTime.now());}Scheduled(cron ${task.cron-expression})public void cronTask() {System.out.println(Dynamic cron task executed at LocalDateTime.now());}
}