您的位置:首页 > 科技 > 能源 > 使用SpringTask框架

使用SpringTask框架

2024/11/18 0:36:32 来源:https://blog.csdn.net/2302_79840586/article/details/140734300  浏览:    关键词:使用SpringTask框架

目录

一.什么是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技术栈持续编辑中,感谢收看!!!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com