目录
一.什么是SpringTask?
二.cron表达式:
三.SpringTask框架的使用操作:
1.导入maven坐标spring-context:
2.启动类添加 @EnableScheduling 以此来开启任务调度:
3.自定义定时任务类:
普通案例:
与WebSocket协议联用:
一.什么是SpringTask?
SpringTask是Spring框架提供的任务调度工具,可以按照约定的时间自动执行某个代码逻辑。
定位:定时任务框架
作用:定时自动执行某段Java代码
eg:信用卡每月还款提醒,火车票售票系统处理未支付订单,银行贷款每月还款提醒......
二.cron表达式:
为了设置规则也就是定义任务出发时间,我们就需要使用cron表达式来控制,就好比我们在以前学Java语言时所学习的正则表达式。
cron构成规则:
cron表达式分为六或七个域,由空格分隔开,每个域代表一个含义。
秒 分钟 小时 日 月 周 年(可选)
eg:用cron表达式来表示2022年10月12日上午九点整 => 0 0 9 12 10 ? 2022
切记,日与周只能出现一个,另一个就需要用?占位,因为我们不想因为星期几与日期不匹配造成误差。
另外我们可以使用cron表达式在线生成器来输出时间表达式。
下面是cron表达式在线生成器的网址:Cron - 在线Cron表达式生成器 (ciding.cc)
- * => 每秒or每分钟or每小时.....
- a-b => a秒到b秒周期内出发or......
- 0/a => 每隔a秒出发一次or.....
- aW => 每月a号最近的工作日(eg:a=6则匹配到的就是周五,若a=5则匹配到的就是周五)
- L => 每月的最后一天
- aL => 每月的最后一个周a
三.SpringTask框架的使用操作:
1.导入maven坐标spring-context:
这里在我们的spring-boot-starter依赖中就已经传递过来了该依赖,所以无需导入。
2.启动类添加 @EnableScheduling 以此来开启任务调度:
package com.sky;import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;@SpringBootApplication
@EnableScheduling //开启任务调度
@Slf4j
public class SkyApplication {public static void main(String[] args) {SpringApplication.run(SkyApplication.class, args);log.info("server started");}
}
3.自定义定时任务类:
普通案例:
这里直接使用cron表达式每隔五秒触发一次该方法在日志输出。
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import java.util.Date;@Component
@Slf4j
public class MyTask {/*** 定时任务 每隔五秒触发一次*/public void executeTask(){log.info("定时任务开始执行:{}",new Date());}
}
与WebSocket协议联用:
这里我们使用到了WebSocket协议,不了解可以查看下面的博客:
使用WebSocket协议调用群发方法将消息返回客户端页面-CSDN博客
@Component
public class WebSocketTask {@Autowiredprivate WebSocketServer webSocketServer;/*** 通过WebSocket每隔5秒向客户端发送消息*/@Scheduled(cron = "0/5 * * * * ?")public void sendMessageToClient() {webSocketServer.sendToAllClient("这是来自服务端的消息:" + DateTimeFormatter.ofPattern("HH:mm:ss").format(LocalDateTime.now()));}
}
好了,今天的分享就到这里了,JavaWeb技术栈持续编辑中,感谢收看!!!