SpringBoot定时任务实现的两种方式介绍

                

今天给大家介绍SpringBoot定时任务实现的几种方式,希望对大家能有所帮助!

1、SpringTask 用法

框架介绍:SpringTask是Spring自带的轻量级定时任务工具,相比于Quartz使用更加简单方便,并且不需要不需要引入其他依赖即可使用。今天主要介绍注解的实现方式:

SpringBoot启动类配置 @EnableScheduling 注解

package my.springboot.task;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;@SpringBootApplication
@EnableScheduling 
public class TaskApplication {public static void main(String[] args) {SpringApplication.run(TaskApplication.class, args);}}

创建测试类 TaskTest.java

package my.springboot.task.controller;import cn.hutool.core.date.DateUtil;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;import java.util.Date;
@Component
public class TaskTest {
//每隔20秒执行一次
@Scheduled(cron = "0/20 * * * * ?")
public void Test(){System.out.println("执行测试"+ DateUtil.now());}
}

然后启动项目就可以了,运行效果如下:

               

2、Quartz用法 介绍

添加依赖

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-quartz</artifactId>
</dependency>

添加测试类 QuartzJobTest.java

package my.springboot.mybatis.controller;import cn.hutool.core.date.DateUtil;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.scheduling.quartz.QuartzJobBean;public class QuartzJobTest extends QuartzJobBean {
@Overrideprotected void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException {String userName = (String) jobExecutionContext.getJobDetail().getJobDataMap().get("userName");String type = (String) jobExecutionContext.getJobDetail().getJobDataMap().get("type");System.out.println("测试类型:"+type+",你好,"+userName+",当前执行时间为:"+ DateUtil.now());}
}

添加配置类 QuartzConfig.java

package my.springboot.mybatis.common;import my.springboot.mybatis.controller.QuartzJobTest;
import my.springboot.mybatis.controller.TaskTest;
import org.quartz.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class QuartzConfig {@Beanpublic JobDetail testJobDetail() {JobDetail jobDetail= JobBuilder.newJob(QuartzJobTest.class).usingJobData("type","Trigger").usingJobData("userName", "小明") //设置参数(键值对).storeDurably().build();
return jobDetail;}
/*** 定时任务1:* Trigger触发器使用*/@Beanpublic Trigger testJobTrigger() {
//每隔5秒执行一次CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule("0/15 * * * * ?");
//创建触发器Trigger trigger = TriggerBuilder.newTrigger().forJob(testJobDetail())//关联上述的JobDetail.withSchedule(cronScheduleBuilder).build();
return trigger;}@Beanpublic JobDetail testSampleJobDetail() {JobDetail jobDetail= JobBuilder.newJob(QuartzJobTest.class).usingJobData("type","SimpleTrigger").usingJobData("userName", "小王")               .storeDurably() .build();
return jobDetail;}/*** 定时任务2:* Simple触发器使用* */@Beanpublic SimpleTrigger testSimpleTrigger(){SimpleScheduleBuilder ssb = SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(10).repeatForever();SimpleTrigger sTrigger = TriggerBuilder.newTrigger().forJob(testSampleJobDetail())//.withSchedule(ssb).build();
return sTrigger;}}

运行效果

               

3、常用Cron表达式

“0 0 13,16,17 * * ?” 每天下午1、4、7点执行一次
“0 0 10 ? * WED” 表示每周三中午10点执行一次
“0 0 10 * * ?” 每天中午10点执行一次
“0 15 13 * * ?” 每天下午1:15执行一次
“0 15 10 * * ? " 每天上午10:15执行一次
“0 30 10 * * ? 2021” 2021年的每天上午10:30执行一次
“0 10 9 ? * MON-FRI” 周一至周五的上午9:10执行一次
“0 15 10 15 * ?” 每月15日上午10:15执行一次
“0 15 10 L * ?” 每月最后一日的上午10:15执行一次
“0 15 10 ? * 6L” 每月的最后一个星期五上午10:15执行一次
"/5 * * * * ?” 每隔5秒执行一次
“0 */1 * * * ?” 每隔1分钟执行一次
“0 0 23 * * ?” 每天23点执行一次
“0 0 1 * * ?” 每天凌晨1点执行一次
“0 0 1 1 * ?” 每月1号凌晨1点执行一次
“0 0 23 L * ?” 每月最后一天23点执行一次
“0 0 1 ? * L” 每周星期天凌晨1点实行一次
“0 26,29,33 * * * ?” 在26分、29分、33分执行一次
“0 0 0,13,18,21 * * ?” 每天的0点、13点、18点、21点都执行一次

IT技术分享社区

个人博客网站:https://programmerblog.xyz

文章推荐程序员效率:画流程图常用的工具程序员效率:整理常用的在线笔记软件远程办公:常用的远程协助软件,你都知道吗?51单片机程序下载、ISP及串口基础知识硬件:断路器、接触器、继电器基础知识

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/270596.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mvc调用mysql存储过程_使用.NET MVC +EF调用oracle的存储过程

题记&#xff1a;需求如题&#xff0c;在网上搜索了一下&#xff0c;没有特别贴合我需求的资料&#xff0c;只好自己摸索&#xff0c;东拼西凑了解了一点东西慢慢尝试做了出来。难点&#xff1a;.NET是微软产品&#xff0c;主要支持Sql Server数据库&#xff0c;对于Oracle的数…

Oracle12c:安装后新建用户及其默认表空间,并创建表测试

环境&#xff1a;操作系统&#xff1a;Windows Server2008 R2 X64 Oracle版本&#xff1a;12c 如何安装&#xff1f; -- oracle 12c在oracle linux 6.6 x64上的安装 -- Windows x64位下完美安装winx64_oracle_12c_database 如何使用DataBase Cofiguration Assistant 创建数据库…

数据库:Redis相关知识梳理

1、数据类型string&#xff08;字符串&#xff09;&#xff1a;最基本的k-v存储 &#xff0c;适合验证码、配置信息等list&#xff08;列表&#xff09;&#xff1a;适合有序/固定的列表。比如行政区、字典表、消息队列等。set&#xff08;集合&#xff09;&#xff1a;支持交集…

python线性回归分析看相关性_机器学习入门-相关分析之简单线性回归

一.什么是机器学习&#xff1f;简单来说&#xff0c;机器学习是一类算法的总称&#xff0c;这些算法企图从大量历史数据中挖掘出其中隐含的规律&#xff0c;并用于预测或者分类&#xff0c;更具体的说&#xff0c;机器学习可以看作是寻找一个函数&#xff0c;输入是样本数据&am…

Android Listview 性能优化

首先我一般使用的适配器是BaseAdapter,其中有两个方法最主要,分别是: getCount,getView,在对Listview 进行优化的时候,首先使用 convertview 和viewHolder 配合进行优化,使用convertview的母的是控件复用,从而加到减少内存的使用,使用viewHolder 的是减少findbyid 的次数.但是在…

前端:JS实现数组去重常用的六种方法介绍

今天给大家分享JS实现数组去重常用的六种方法&#xff0c;希望对大家能有所帮助&#xff01;定义变量let arr [20,6,13,20,100,8,13,11]; let newArr [];1、两层循环去重 for(let i 0;i < arr.length;i){for(let j i 1;j < arr.length;j){if(arr[i] arr[j]){arr.sp…

python自定义colorbar_python可视化 matplotlib画图使用colorbar工具自定义颜色

python matplotlib画图使用colorbar工具自定义颜色 colorbar(draw colorbar without any mapple/plot)自定义colorbar可以画出任何自己想要的colorbar&#xff0c;自由自在、不受约束&#xff0c;不依赖于任何已有的图(plot/mappable)。这里使用的是mpl.colorbar.ColorbarBase类…

不能读取文件“itunes.library.itl”因为它是由更高级别的itunes所创建的

转自&#xff1a;https://zhidao.baidu.com/question/80796363.html 是因为你安装过高版本的后又装你版本的itunes. 你在电脑上搜索所有硬盘上的itunes library.itl这个文件.搜到就删了&#xff0c;而且搜索里选择“高级选项”除了区分大小写其它几个都钩上。这样注消下&#x…

路由器:什么是软路由,看完本篇文章你就懂了

今天小编给大家介绍一下软路由具体是什么&#xff0c;有什么实际用途&#xff0c;看完本篇你就懂了&#xff01; 一、软路由与硬路由概念介绍 硬路由&#xff1a;目前我们家里普遍使用的路由器&#xff0c;有厂家提供整体的解决方案&#xff0c;包括处理器、电源供应、嵌入式软…

c#form+mysql储存读取图片_C#从SQL server数据库中读取l图片和存入图片

本实例主要介绍如何将图片存入数据库。将图片存入数据库,首先要在数据库中建立一张表,将存储图片的字段类型设为Image类型,用FileStream类、BinaryReader把图片读成字节的形式,赋给一个字节数组,然后用ADO.SqlCommand对象的ExecuteNonQuery()方法来把数据保存到数据库中。主要代…

if...else..的错误用法

1.最近在写js代码完成一个前段DOM操作的函数时&#xff0c;自己错误的使用了if..else..控制体。为什么是错误的呢&#xff1f;看看我的 代码你就明白了&#xff1a; 1 document.getElementsByClassName(eButton)[0].οnclickfunction(){2 var checkeddocument.getElementsB…

Git服务器报错:host key for (ip地址) has changed and you have requested strict checking

一:报错提示 如下&#xff1a; WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that a host key …

软件:常用 Linux 软件汇总,值得收藏

目录 1、音频软件 2、聊天软件 3、数据备份与恢复 4、桌面个性化工具 5、开发必备 6、 电子书工具 7、 编辑器软件 8、教育软件 9、电子邮件软件 10、文件管理器 11、娱乐游戏 12、 图形工具 13、互联网浏览 14、 办公效率工具 15、 生产力效率工具 16、 安全防护 17、文件共享…

java上下文即ServletContext

上下文即ServletContext,是一个全du局的储存信zhi息的空间&#xff0c;服务器启动&#xff0c;其就dao存zhuan在&#xff0c;服务器关闭&#xff0c;其才释放。 所有用户共用一个ServletContext。所以&#xff0c;为了节省空间&#xff0c;提高效率&#xff0c;ServletContext中…

数据帧,数据包,报文段,报文,分组,数据包的概念和区别

应用层——消息传输层——数据段(segment)网络层——分组、数据包&#xff08;packet&#xff09;链路层——帧&#xff08;frame&#xff09;物理层——P-PDU&#xff08;bit&#xff09;分组、包&#xff0c;packet&#xff0c;信息在互联网当中传输的单元&#xff0c;网络层…

python开源自动化测试平台_8款开源自动化测试框架,速速收藏

原标题&#xff1a;8款开源自动化测试框架&#xff0c;速速收藏来源&#xff1a;http://www.51testing.com/近年来&#xff0c; 自动化测试越来越热门&#xff0c;该领域新的挑战和机遇也在同步产生&#xff0c;尤其是AI&#xff0c;RPA和机器学习&#xff0c;可以预见会在几年…

SpringBoot集成Redis用法笔记

今天给大家整理一下SpringBoot集成Redis用法笔记&#xff0c;希望对大家能有所帮助&#xff01;一、Redis优点介绍1、速度快不需要等待磁盘的IO&#xff0c;在内存之间进行的数据存储和查询&#xff0c;速度非常快。当然&#xff0c;缓存的数据总量不能太大&#xff0c;因为受到…

tomcat和servlet的关系

tomcat和servlet的关系 Tomcat 是Web应用服务器,是一个Servlet/JSP容器. Tomcat 作为Servlet容器,负责处理客户请求,把请求传送给Servlet,并将Servlet的响应传送回给客户.而Servlet是一种运行在支持Java语言的服务器上的组件. Servlet最常见的用途是扩展Java Web服务器功能,提…

Linux常用远程连接工具介绍,总有一款适合你

目录 1、xshell 2、winscp 3、PuTTY 4、MobaXterm 5、FinalShell 今天给大家推荐Linux常用远程连接工具&#xff0c;希望对大家能有所帮助&#xff01; 1、xshell 介绍&#xff1a; xshell是一个非常强大的安全终端模拟软件&#xff0c;它支持SSH1, SSH2, 以及Windows平台的TEL…