做静态网站d,天河岗顶棠下上社网站建设公司,湖南州省郴州,wordpress漏洞总结目录 1、Quartz简介1.1 Quartz的三大核心组件1.2 CronTrigger配置格式 2、SpringBoot整合Quartz框架2.1 创建项目2.2 实现定时任务 1、Quartz简介
Quartz是一个开源的任务调度服务#xff0c;它可以独立使用#xff0c;也可与其它的Java EE#xff0c;Java SE应用整合使用。… 目录 1、Quartz简介1.1 Quartz的三大核心组件1.2 CronTrigger配置格式 2、SpringBoot整合Quartz框架2.1 创建项目2.2 实现定时任务 1、Quartz简介
Quartz是一个开源的任务调度服务它可以独立使用也可与其它的Java EEJava SE应用整合使用。无论是执行十个一百个工作的简单任务还是执行成百上千个工作的复杂调度任务都可以使用Quartz来实现此外Quartz还提供了很多企业级应用的特色如JTA事务支持及集群。
如果你的应用中有任务需要在特定的时间执行亦或周期循环执行则Quartz也许是你理想的选择。
1.1 Quartz的三大核心组件
任务Job ----你要做什么事触发器Trigger -----你什么时候去做调度器Scheduler ----将Job和Trigger组装起来使定时任务被真正执行。
1.2 CronTrigger配置格式
corn表达式是由若干数字、空格、符号按一定的规则组成的一组字符串从而表达时间的信息。
Cron 表达式是一个字符串分为 6 或 7 个域每一个域代表一个含义 Cron 有如下两种语法格式
[秒] [分] [小时] [日] [月] [周] [年][秒] [分] [小时] [日] [月] [周]
字段是否必填允许填写的值允许的通配符秒是0-59, - * /分是0-59, - * /小时是0-23, - * /日是1-31, - * ? / L W月是1-12 or JAN-DEC, - * /周是1-7 or SUN-SAT, - * ? / L #年否留空 或 1970-2099, - * /
通配符说明:
星号*表示所有值 ~~~~ 例如:在分的字段上设置 “*”,表示每一分钟都会触发。
减号-表示区间 ~~~~~~ 例如在小时上设置 “10-12”,表示 10,11,12点都会触发。
逗号,列出枚举 ~~~~~~ 例如在分钟里5,15表示5分钟和20分钟触发
斜杠/指定增量 ~~~~~~~ 例如在分钟里3/15”表示从3分钟开始没隔15分钟执行一次
问号? 只在日期域和星期域中使用表示忽略该字段 ~~~~ 例如:要在每月的10号触发一个操作但不关心是周几所以需要周位置的那个字段设置为? 具体设置为 0 0 0 10 * ?
L 表示last例如星期中表示7或SAT月份中表示最后一天31或306L表示这个月倒数第6天FRIL表示一个星期五
W 只能用在月份中表示最接近指定天的工作日
# 只能用在星期中表示这个月的第几个周几例如6#3表示这个月的第3个周五 可通过在线生成Cron表达式的工具https://www.bejson.com/othertools/cron/来生成自己想要的表达式。 常用示例
表达式含义0 * * * * ?每1分钟触发一次0 0 * * * ?每天每1小时触发一次0 0 10 * * ?每天10点触发一次0 * 14 * * ?在每天下午2点到下午2:59期间的每1分钟触发0 30 9 1 * ?每月1号上午9点半0 15 10 15 * ?每月15日上午10:15触发*/5 * * * * ?每隔5秒执行一次0 */1 * * * ?每隔1分钟执行一次0 0 5-15 * * ?每天5-15点整点触发0 0/3 * * * ?每三分钟触发一次0 0 0 1 * ?每月1号凌晨执行一次
2、SpringBoot整合Quartz框架
【示例】创建SpringBoot项目并整合Quartz框架实现定时任务功能。
2.1 创建项目
1创建SpringBoot项目项目结构如下图 2使用Maven添加依赖文件
在pom.xml配置信息文件中添加SpringBoot整合Quartz框架的相关依赖
!-- SpringBoot 整合 Quartz 定时任务 --
dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-quartz/artifactId version2.3.5.RELEASE/version
/dependency2.2 实现定时任务
1实现定时任务业务逻辑
自定义一个job。
package com.by.job;import org.quartz.JobExecutionException;
import org.springframework.stereotype.Component;
import java.text.SimpleDateFormat;
import java.util.Date;Component
public class PrintTimeJob {//任务public void printTime() throws JobExecutionException {//创建格式化日期对象SimpleDateFormat simpleDateFormat new SimpleDateFormat(yyyy-MM-dd hh:mm:ss);//打印当前时刻System.out.println(现在时刻simpleDateFormat.format(new Date()));}
}2配置定时任务
编写quartz配置类。
package com.by.config;import com.by.job.PrintTimeJob;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.quartz.CronTriggerFactoryBean;
import org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean;
import org.springframework.scheduling.quartz.SchedulerFactoryBean;import java.util.Objects;Configuration
public class QuartzConfig {Bean //job要做的事public MethodInvokingJobDetailFactoryBean methodInvokingJobDetailFactoryBean(PrintTimeJob printTimeJob){MethodInvokingJobDetailFactoryBean JobDetailFactoryBean newMethodInvokingJobDetailFactoryBean();//绑定要执行的job类JobDetailFactoryBean.setTargetObject(printTimeJob);//绑定要定时执行的方法JobDetailFactoryBean.setTargetMethod(printTime);return JobDetailFactoryBean;}Bean //trigger什么时候做public CronTriggerFactoryBean cronTriggerFactoryBean(MethodInvokingJobDetailFactoryBean JobDetailFactoryBean){CronTriggerFactoryBean triggerFactoryBean new CronTriggerFactoryBean();//配置cron表达时设置定时规则triggerFactoryBean.setCronExpression(* * * * * ?);//绑定job对象triggerFactoryBean.setJobDetail(Objects.requireNonNull(JobDetailFactoryBean.getObject()));return triggerFactoryBean;}Bean //scheduler将Job和Trigger组装起来使定时任务被真正执行public SchedulerFactoryBean schedulerFactoryBean(CronTriggerFactoryBean triggerFactoryBean){SchedulerFactoryBean schedulerFactoryBean new SchedulerFactoryBean();//绑定trigger对象schedulerFactoryBean.setTriggers(triggerFactoryBean.getObject());return schedulerFactoryBean;}
}
3编写启动类
package com.by;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;SpringBootApplication
public class QuartzTestApp {public static void main(String[] args) {SpringApplication.run(QuartzTestApp.class,args);}
}4测试 完成上述代码与配置后就可以启动 SpringBoot 项目进行运行测试。
执行结果