通过Quartz实现定时任务调度

一、什么是 Quart 框架

quart 是一个开源的作业调度框架,它完全由java写成,它提供了巨大的灵活性而不牺牲简单性。你能用它来为执行一个作业而创建简单的或复杂的调度。

二、maven项目导入依赖

		<dependency>
			<groupId>org.quartz-scheduler</groupId>
			<artifactId>quartz</artifactId>
			<version>2.2.1</version>
	    </dependency>

三、Quartz核心点

1.Job

表示一个任务(工作),要执行的具体内容。

2.JobDetail

任务描述,表示一个具体的可执行的任务调度程序,Job是这个可执行调度程序具体执行的内容.

3.Trigger

代表一个调度参数的配置,指定任务调度的频率时间,合适进行任务调度。

4.Scheduler

代表一个调度容器,一个调度容器可注册多个JobDetail和Trigger,当JobDetail与Trigger组合,就可以被Scheduler容器调度了。

四、测试代码的编写

具体要执行的内容,实现job。

package com.djc.erp.job;
import java.util.Date;
import com.djc.utils.UtilFuns;

public class TestJob {
	public void showTime() throws Exception {
		System.out.println("定时任务: "+UtilFuns.dateTimeFormat(new Date(), "HH:mm:ss"));
	}
}

五、编写Spring与Quartz整合的配置文件

1.创建配置文件application-job.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
	xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="
		http://www.springframework.org/schema/beans 
		http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context 
		http://www.springframework.org/schema/context/spring-context.xsd
		http://www.springframework.org/schema/tx 
		http://www.springframework.org/schema/tx/spring-tx.xsd
		http://www.springframework.org/schema/aop 
		http://www.springframework.org/schema/aop/spring-aop.xsd
		">  
	
	<!-- 定义一个任务类 -->
	<bean id="testJob" class="com.djc.erp.job.TestJob">
		
	</bean>
	<!-- 任务类描述 -->
	<bean id="testJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
		<!--targetObiect:实体类   targetMethod:类里执行的方法-->
		<property name="targetObject" ref="testJob"></property> 
		<property name="targetMethod" value="showTime"></property>
	</bean>
	<!-- 触发器  -->
	<bean id="testTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
		<property name="jobDetail" ref="testJobDetail"></property>
		<!-- Cron表达式,执行时间 -->
		<property name="cronExpression" value="0/1 * * * * ? *"></property>
	</bean>
	<!-- 总管理容器 -->
	<bean id="startQuartz" class="org.springframework.scheduling.quartz.SchedulerFactoryBean" >
		<property name="triggers">
			<list>
				<ref bean="testTrigger"/>
			</list>
		</property>
	</bean>
	
</beans>

2.测试结果

每隔一秒显示一次当前时间
在这里插入图片描述

六、Cron表达式

<property name="cronExpression" value="0/1 * * * * ? *"></property>

Quartz Cron表达式支持七个域: 秒 分 时 日 月 周 年

名称是否必须允许值特殊字符
0-59,- * /
0-59,- * /
0-23,- * /
1-31,- * ? / L W C
1-12 或 JAN-DEC,- * /
1-7 或 SUN-SAT,- * / L C #
空 或 1970-2099,- * /

理解特殊字符:
* 星号
指示着你想在这个域上包含所有合法的值。例如,在月份域上使用星号意味着每个月都会触发这个 trigger。eg:0/1 * * * * ? *
? 问号
只能用在日和周域上,但是不能在这两个域上同时使用。你可以认为 ? 字符是 “我并不关心在该域上是什么值。” 这不同于星号,星号是指示着该域上的每一个值。? 是说不为该域指定值。
, 逗号
被用来指定另外的值。如:“MON,WED,FRI”在星期域里表示”星期一、星期三、星期五”。
/ 斜杠
用于指定增量。如:“0/15”在秒域意思是每分钟的0,15,30和45秒。“5/15”在分钟域表示每小时的5,20,35和50。
- 中划线
被用来指定一个范围。如:“10-12”在小时域意味着“10点、11点、12点”
# 井号
只允许在星期域中出现。这个字符用于指定本月的某某天。例如:“6#3”表示本月第三周的星期五(6表示星期五,3表示第三周)。
L 字母
某域上允许的最后一个值。它仅被日和周域支持。当用在日域上,表示的是在月域上指定的月份的最后一天。
W 字母
只允许日期域出现。这个字符用于指定日期的最近工作日。例如:如果你在日期域中写 “15W”,表示:这个月15号最近的工作日。所以,如果15号是周六,则任务会在14号触发。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值