Spring任务调度实战之Quartz Simple Trigger(转)
在spring中对任务调度的集成除了使用JDK自带的Timer和TimerTask类来实现简单任务调度以外,也可以使用企业级的开源作业调度框架Quartz来实现,下面是一个小例子:
1. 首先是一个任务类,这个类没有实现任何接口,其中包含一个run方法用来运行这个task,代码如下:
package org.garbagecan.springstudy.schedule.quartz; public class MyTask {
private String name; public void run() {
System.out.println("Run task: " + name + ".");
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
}
}
2. 一个Job类,这个类需要继承spring的QuartzJobBean类,来说明当前类是一个Quartz的Job类,类包含了一个Task类的对象实例,在每次Job被调度的时候,将会运行其中的executeInternal方法,代码如下:
package org.garbagecan.springstudy.schedule.quartz; import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.scheduling.quartz.QuartzJobBean; public class MyJob extends QuartzJobBean { private MyTask myTask; protected void executeInternal(JobExecutionContext context)
throws JobExecutionException { myTask.run();
} public MyTask getMyTask() {
return myTask;
} public void setMyTask(MyTask myTask) {
this.myTask = myTask;
}
}
3. Spring配置文件,内容如下
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"
default-lazy-init="true"> <bean id="timerFactory" class="org.springframework.scheduling.quartz.SchedulerFactoryBean" lazy-init="false">
<property name="triggers">
<list>
<ref local="simpleTrigger"/>
</list>
</property>
</bean> <!-- <bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean"> 新版的spring-context-support中需要更换-->
<bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
<property name="jobDetail" ref="myJob" />
<property name="startDelay" value="0" />
<property name="repeatInterval" value="10000" />
</bean> <bean id="myJob" class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="name" value="myJob"/>
<property name="group" value="myGroup"/>
<property name="description" value="myJob"/>
<property name="jobClass" value="org.garbagecan.springstudy.schedule.quartz.MyJob"/>
<property name="jobDataAsMap">
<map>
<entry key="myTask" value-ref="myTask" />
</map>
</property>
</bean> <bean id="myTask" class="org.garbagecan.springstudy.schedule.quartz.MyTask">
<property name="name" value="my task"/>
</bean> </beans>
3.1 首先,需要定义了一个Task类,具体的任务逻辑可以写在这个类里;
3.2 定义一个JobDetailBean类的bean,这个是为了适应Quartz的JobDetail,其中可以定义name,group,description等信息,这些信息主要是为了和别的作业做区分使用;其中还有一个jobClass属性,定义了使用的是那个Job类实例,这里使用第二步创建的MyJob类;最后定义了一个叫jobDataAsMap的属性,这个属性是Quartz提供的用来传递参数使用的一个Map集合,这些集合里的类会被spring自动注入到目标Job类中;
3.3 创建一个触发器类,这里使用的是Quartz提供的Simple Trigger,在Spring里,使用的是SimpleTriggerBean来做映射,主要是定义了第一次运行的延时时间,每次重复执行之间的间隔,当然还有最主要的具体的Job类实例;
3.4 最后定义了一个SchedulerFactoryBean的bean,其中定义了具体要调度那些触发器;
4. 最后,写一个测试类来测试上面的代码和配置
package org.garbagecan.springstudy.schedule.quartz; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Test {
public static void main(String[] args) throws Exception {
new ClassPathXmlApplicationContext("/org/garbagecan/springstudy/schedule/quartz/spring.xml");
}
}
Spring任务调度实战之Quartz Simple Trigger(转)的更多相关文章
- Spring任务调度实战之Quartz Cron Trigger
在Quartz中除了使用最简单的Simple Trigger以外,也可以使用类似Linux上Cron作业的CronTrigger的方式来运行Job,下面是一个小例子: 1. 首先是一个任务类,这个类没 ...
- Spring任务调度之Quartz集成
推荐一个博客:http://blog.csdn.net/column/details/14251.html 基本概念 Job:是一个接口,只有一个方法void execute(JobExecution ...
- Spring研磨分析、Quartz任务调度、Hibernate深入浅出系列文章笔记汇总
Spring研磨分析.Quartz任务调度.Hibernate深入浅出系列文章笔记汇总 置顶2017年04月27日 10:46:45 阅读数:1213 这系列文章主要是对Spring.Quartz.H ...
- Spring任务调度之Quartz
一.Quartz作业类的继承方式来讲,可以分为两类: 作业类需要继承自特定的作业类基类,如Quartz中需要继承自org.springframework.scheduling.quartz.Quart ...
- spring 任务调度quartz
简单记录一下spring任务调度quartz的例子 首先添加包 quartz-2.2.3.jar 然后写个简单的TestJob类 package com.job; import java.util.D ...
- Spring任务调度
任务调度是大多数应用系统的常见需求之一,拿论坛来说:每个半个小时生成精华文章的RSS文件,每天凌晨统计论坛用户的积分排名,每隔30分钟执行对锁定过期的用户进行解锁.以上都是以时间为关注点的调度,事实上 ...
- Spring/Spring boot正确集成Quartz及解决@Autowired失效问题
周五检查以前Spring boot集成Quartz项目的时候,发现配置错误,因此通过阅读源码的方式,探索Spring正确集成Quartz的方式. 问题发现 检查去年的项目代码,发现关于QuartzJo ...
- spring mvc 实战化项目之三板斧
laravel实战化项目之三板斧 spring mvc 实战化项目之三板斧 asp.net mvc 实战化项目之三板斧 接上文希望从一张表(tb_role_info 用户角色表)的CRUD展开spri ...
- 任务调度开源框架Quartz概述
任务调度开源框架Quartz 几乎每个项目中都用到了自动任务处理功能.所以在任务调度的功能很常用,但是一个好的任务调度程序是一个颇具挑战性的工作.最近用到Quartz这个框架,感觉很好,所以进行学习. ...
随机推荐
- .net 重新注册
今天同事问 一个IIS 的监控站点 .net 出现问题:对于windows 一般都停留在重启生效思想:然并没有生效: 于是建议重新注册.NET : 一般出现原因: 在默认安装路径 重启注册: 默认的安 ...
- 信息收集之censys
一.摘要 Censys提供了search.view.report.query.export以及data六种API接口. search接口的请求地址是https://www.censys.io/api/ ...
- hashMap之jdk1.7和jdk1.8
参考链接: http://allenwu.itscoder.com/hashmap-analyse https://tech.meituan.com/java-hashmap.html
- Eclipse文件路径
经常我们需要读取某个文件,一般情况下,在Eclipse工程中,路径为./src/....
- android logger 日志工具
https://github.com/orhanobut/logger 基础使用:https://blog.csdn.net/github_33304260/article/details/54799 ...
- 之手算KD-tree
转自:https://zhuanlan.zhihu.com/p/27453420 本文来源于Machine Learning: Clustering & Retrieval | Courser ...
- 详解Jquery选择器
1.常见的选择器 id,类,标签选择器. $("#a1") $(".myclass") $("div") 2.组合选择器 $("# ...
- UML和模式应用5:细化阶段(4)--如何创建领域模型
1.前言 以当前迭代中所要设计的需求为界,创建领域模型的步骤: 1.寻找概念类 2.将其绘制为UML类图中的类 3.添加关联和属性 2.如何寻找概念类 寻找概念类有如下几种方法: 重用和修改现有的模型 ...
- Linux mmc framework1:软件架构
[部分内容来自] http://www.wowotech.net/comm/mmc_framework_arch.html 1. 前言 由eMMC基础技术1:MMC简介中MMC.SD.SDIO的介绍可 ...
- javascript中cookie常用操作
//写cookies function setCookie(c_name, value, expiredays){ var exdate=new Date(); exdate.setTime(exda ...