Quartz初探
来源:互联网 发布:unity3d 点击选中物体 编辑:程序博客网 时间:2024/06/07 00:35
Quartz是一个开源的作业调度框架,其中分3部分:
1.作业 ,需要实现org.quartz.Job接口
2.触发器 常用的有:
2-1.SimpleTrigger
2-2.CronTrigger
可以定制复杂时间 Cron表达式:Seconds Minutes Hours DayofMonth Month DayofWeek Year
可以使用复杂符号:
* 表示任意
? 只能用在DayofMonth和DayofWeek,也表示任意当写法如下13 13 15 20 * ?这里最后就要用?号
- 表示范围 5-20
/ 表示从起始时间开始触发,然后每隔固定时间触发一次 5/20 起始5,间隔20
, 表示枚举 5,20
L表示最后.只能用在DayofMonth和DayofWeek
W 表示有效工作日,只能出现在DayofMonth
LW 表示每个月的最后一个工作日
# 表示某个月的第几个星期几 4#5
3.调度器由Scheduler接口体现
/** * 作业 * @author Administrator * */public class TestJob implements Job{private static int count = 0;private boolean isRunning = false;@Overridepublic void execute(JobExecutionContext arg0) throws JobExecutionException {// TODO Auto-generated method stubif(!isRunning){count++;System.out.println(new Date()+"作业"+count+"被调度");for(int i=0;i<100;i++){System.out.println("作业完成"+(i+1)+"%");try {Thread.sleep(100);} catch (Exception e) {e.printStackTrace();}}System.out.println(new Date()+"作业调度完成");}else{System.out.println(new Date()+"任务退出");}}}
/** * 调度器 * @author Administrator * */public class MyQuartzServer {public static void main(String[] args){try {new MyQuartzServer().startScheduler();} catch (SchedulerException e) {// TODO Auto-generated catch blocke.printStackTrace();}}private void startScheduler() throws SchedulerException{//调度器实例Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();//以TestJob创建JobDetailJobDetailImpl jobDetail = new JobDetailImpl("dd",Scheduler.DEFAULT_GROUP,TestJob.class);//触发器Trigger trigger = new SimpleTriggerImpl("dd",Scheduler.DEFAULT_GROUP,5000,200); //绑定触发器和Detail scheduler.scheduleJob(jobDetail,trigger);scheduler.start();}}
现在将其应用到Spring中
1.创建作业有两个方法
1-1.继承QuartzJobBean
先
继承抽象类QuartzJobBean
再配置
<bean name="quartzDetail" class="org.springframework.scheduling.quartz.JobDetailBean"><property name="jobClass" value="QuartzJobBean子类"></property></bean>
1-2.利用MethodInvokingJobDetailFactoryBean工厂Bean包装普通java对象,无需继承任何父类,直接配置即可使用
<bean id="testQuarz" class="XX.TestQuartz"/><bean id="quartzDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="targetObject" ref="testQuartz"/><!--目标类--> <property name="targetMethod" value="test"/><!--目标类方法--></bean>
定义完bean后
2.定义触发器SimplieTriggerBean或CronTriggerBean
3.使用SchedulerFactoryBean调度
public class PayJob extends QuartzJobBean{private boolean isRunning = false;private EmpManager em;@Overrideprotected void executeInternal(JobExecutionContext arg0)throws JobExecutionException {if(!isRunning){System.out.println("开始打卡");isRunning = true;em.autoPunch();isRunning = false;}}public EmpManager getEm() {return em;}public void setEm(EmpManager em) {this.em = em;}}
<!-- Quartz2 --><!-- 定义触发器 --><bean id="cronTriggerPunch" class="org.springframework.scheduling.quartz.CronTriggerBean"><!-- Detail --><property name="jobDetail"><bean class="org.springframework.scheduling.quartz.JobDetailBean"><property name="jobClass" value="com.fox.wf.scheduler.PunchJob"></property><property name="jobDataAsMap"><map><entry key="em" value-ref="empManager"></entry></map></property></bean></property><!-- time --><property name="cronExpression" value="0 0 7,12 ? * MON-FRI"></property></bean><bean id="cronTriggerPay" class="org.springframework.scheduling.quartz.CronTriggerBean"><!-- Detail --><property name="jobDetail"><bean class="org.springframework.scheduling.quartz.JobDetailBean"><property name="jobClass" value="com.fox.wf.scheduler.PayJob"></property><property name="jobDataAsMap"><map><entry key="em" value-ref="empManager"></entry></map></property></bean></property><!-- time --><property name="cronExpression" value="0 0 2 3 * ? *"></property></bean><!-- 作业调度 --><bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"><property name="triggers"><list><ref local="cronTriggerPunch"></ref><ref local="cronTriggerPay"></ref></list></property></bean>
- Quartz初探
- 初探quartz scheduler
- quartz初探(一)
- quartz初探(二)
- Quartz与Trigger初探
- Quartz系列笔记(2)--Quartz使用初探
- 35. Quartz 2D初探
- 任务调度Quartz初探Demo(一)
- 任务调度Quartz初探Demo(二)
- 任务调度Quartz初探Demo(三)
- quartz初探--相关类和接口
- 初探UIKit与Quartz 2D绘画技术
- Quartz
- quartz
- Quartz
- Quartz
- quartz
- quartz
- 给 Android 应用程序签名
- ZOJ2588
- java网络编程实现一个聊天程序
- socket之小结
- javascript上传并限制图片大小
- Quartz初探
- 酒弄人生
- 【P2P网络】磁力链接转换为种子文件 magnet to torrent
- MyEclipse常见小瓿题
- i++ 和 ++i的区别总结
- 排序----希尔排序
- 浅谈MMORPG任务编辑器的设计与实现
- 矩阵相乘
- UDP协议复习