Spring整合Quartz实现定时任务调度

一. 核心类

1. Job: 表示一个工作, 具体的业务处理都在这里.

2. JobDetail: 表示一个具体的可执行的调度程序.

3. Trigger: 用于调度参数的配置(什么时候去调用Job).

4. Scheduler: 表示一个调度容器, 容器中有一个线程池, 用来并行调度执行每个作业, 一个调度容器中可以注册多个JobDetail和Trigger.

二. 整合spring

1. 代码结构图:

2. applicationContext.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"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
	http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
	http://www.springframework.org/schema/context
	http://www.springframework.org/schema/context/spring-context-2.5.xsd"
	default-autowire="byName">

	<!-- 调度器 -->
	<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
		<property name="triggers">
			<list>
				<!-- 触发器列表 -->
				<ref bean="cronTrigger" />
			</list>
		</property>
		<!-- 加载配置文件, 如果不配置, 将会使用quartz默认的配置 -->
		<property name="configLocation" value="classpath:quartz.properties" />
	</bean>

	<!-- 触发器 -->
	<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
		<!-- 指向我们的任务 -->
		<property name="jobDetail" ref="reportTask" />
		<!-- 每天晚上23点1分到59分,每分钟运行一次 -->
		<property name="cronExpression" value="0 1-59 23 * * ?" />
	</bean>

	<!-- 业务处理类 -->
	<bean name="reportTask" class="org.springframework.scheduling.quartz.JobDetailBean">
		<property name="jobClass" value="com.zdp.quartz.BusinessReport" />
	</bean>
</beans>

3. quartz.properties

#============================================================================
# Configure Main Scheduler Properties
#============================================================================
org.quartz.scheduler.instanceName = DefaultQuartzScheduler
org.quartz.scheduler.instanceId = AUTO
org.quartz.scheduler.rmi.export = false
org.quartz.scheduler.rmi.proxy = false
org.quartz.scheduler.wrapJobExecutionInUserTransaction = false

#============================================================================
# Configure ThreadPool
#============================================================================
org.quartz.threadPool.threadCount = 10
org.quartz.threadPool.threadPriority = 5

#============================================================================
# Configure JobStore
#============================================================================
org.quartz.jobStore.misfireThreshold = 60000

4. BusinessReport.java

/**
 * 业务处理类
 */
public class BusinessReport implements Job {
	// 执行报表统计入口函数
	public void execute(JobExecutionContext context) throws JobExecutionException {
		System.out.println("开始执行报表的业务逻辑了, 现在的时间是: " + new Date());
	}
}

5. Main.Java

/**
 *  测试类
 */
public class Main {
	public static void main(String[] args) {
		new ClassPathXmlApplicationContext("applicationContext.xml");
	}
}

三.
cronExpression表达式

0 0 12 * * ? --------------- 在每天中午12:00触发

0 15 10 ? * * --------------- 每天上午10:15触发

0 15 10 * * ? --------------- 每天上午10:15触发

0 15 10 * * ? * --------------- 每天上午10:15触发

0 15 10 * * ? 2005 --------------- 在2005年中的每天上午10:15触发

0 * 14 * * ? --------------- 每天在下午2:00至2:59之间每分钟触发一次

0 0/5 14 * * ? --------------- 每天在下午2:00至2:59之间每5分钟触发一次

0 0/5 14,18 * * ? --------------- 每天在下午2:00至2:59和6:00至6:59之间的每5分钟触发一次

0 0-5 14 * * ? --------------- 每天在下午2:00至2:05之间每分钟触发一次

0 10,44 14 ? 3 WED --------------- 每三月份的星期三在下午2:00和2:44时触发

0 15 10 ? * MON-FRI --------------- 从星期一至星期五的每天上午10:15触发

0 15 10 15 * ? --------------- 在每个月的每15天的上午10:15触发

0 15 10 L * ? --------------- 在每个月的最后一天的上午10:15触发

0 15 10 ? * 6L --------------- 在每个月的最后一个星期五的上午10:15触发

0 15 10 ? * 6L 2002-2005 --------------- 在2002, 2003, 2004, 2005年的每个月的最后一个星期五的上午10:15触发

0 15 10 ? * 6#3 --------------- 在每个月的第三个星期五的上午10:15触发

0 0 12 1/5 * ? --------------- 从每月的第一天起每过5天的中午12:00时触发

0 11 11 11 11 ? --------------- 在每个11月11日的上午11:11时触发

Spring整合Quartz实现定时任务调度,布布扣,bubuko.com

时间: 2024-10-03 23:04:15

Spring整合Quartz实现定时任务调度的相关文章

Spring整合TimerTask实现定时任务调度

一. 前言 最近在公司的项目中用到了定时任务, 本篇博文将会对TimerTask定时任务进行总结, 其实TimerTask在实际项目中用的不多, 因为它不能在指定时间运行, 只能让程序按照某一个频度运行. 二. TimerTask JDK中Timer是一个定时器类, 它可以为指定的定时任务进行配置. JDK中TimerTask是一个定时任务类, 该类实现了Runnable接口, 是一个抽象类, 我们可以继承这个类, 实现定时任务. /** * 继承TimerTask实现定时任务 */ publi

Spring整合quartz实现定时动态任务

在Spring中使用Quartz有两种方式实现:第一种是任务类继承QuartzJobBean,第二种则是在配置文件里定义任务类和要执行的方法,类和方法可以是普通类.很显然,第二种方式远比第一种方式来的灵活. 这里使用MethodInvokingJobDetailFactoryBean,任务类可以不实现Job接口,通过targetMethod指定调用方法,实现定时动态任务功能. <bean id="addHandlePayCashApplyToMq" class="org

Spring整合Quartz定时发送邮件

功能描述:刚开始接触Quartz,试着用Quartz整合spring实现每隔一分钟发送一封邮件连续发送10次 核心jar: 邮件发送:commons-email-1.2.jar mail.jar(必须的) quartz:quartz-all-1.8.3.jar quartz-all-1.8.3/lib/下所有jar spring:spring-context-support.ajr(必须的) 只贴出核心代码: Email发送:使用apache commons-email跟mail package

spring整合quartz时间任务调度框架

spring整合quartz框架 1.创建maven工程 2.导入jar包(pom.xml) <dependencies> <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.2.1</version> </dependency> <dependency&

spring整合quartz并持久化

spring整合quartz有两种方式: 一.常见是使用配置文件,将定时任务保存到内存中 简单示例: <!-- 短信催还提醒任务调度 --> <bean id="overdueRecall" class="com.sursen.souba.ddlibserve.quartz.OverdueRecallTimerTask" /> <!--定义定时执行overdueRecallTimerTask 这个bean中的overdueRecall(

项目ITP(六) spring4.0 整合 Quartz 实现动态任务调度

前言 系列文章:[传送门] 项目需求: http://www.cnblogs.com/Alandre/p/3733249.html 上一博客写的是基本调度,后来这只能用于,像每天定个时间 进行数据库备份.但是,远远不能在上次的需求上实现.所以需要实现spring4.0 整合 Quartz 实现动态任务调度. 正文 spring4.0 整合 Quartz 实现任务调度.这真是期末项目的最后一篇,剩下到暑假吧.  Quartz 介绍 Quartz is a full-featured, open s

使用Spring整合Quartz轻松完成定时任务

一.背景 上次我们介绍了如何使用Spring Task进行完成定时任务的编写,这次我们使用Spring整合Quartz的方式来再一次实现定时任务的开发,以下奉上开发步骤及注意事项等. 二.开发环境及必须jar包依赖 1.开发环境 Spring 4.2.6.RELEASE Maven 3.3.9 Jdk 1.7 Idea 15.04 2.必不可少jar包依赖 1 <dependency> 2 <groupId>org.springframework</groupId> 3

Spring整合Quartz定时任务 在集群、分布式系统中的应用(Mysql数据库环境)

Spring整合Quartz定时任务 在集群.分布式系统中的应用(Mysql数据库环境) 转载:http://www.cnblogs.com/jiafuwei/p/6145280.html 单个Quartz实例能给予你很好的Job调度能力,但它不能满足典型的企业需求,如可伸缩性.高可靠性满足.假如你需要故障转移的能力并能运行日益增多的 Job,Quartz集群势必成为你应用的一部分了.使用 Quartz 的集群能力可以更好的支持你的业务需求,并且即使是其中一台机器在最糟的时间崩溃了也能确保所有的

Spring quartz Job不能依赖注入,Spring整合quartz Job任务不能注入

Spring quartz Job不能依赖注入,Spring整合quartz Job任务不能注入 Spring4整合quartz2.2.3中Job任务使用@Autowired不能注入 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ©Copyright 蕃薯耀 2017年9月6日 http://ww