spring定时器_第1页
spring定时器_第2页
spring定时器_第3页
spring定时器_第4页
spring定时器_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、与使用 Methodi nvok in.Spring 中使用 Quartz 的 2种方法(extends QuartzJobBean开发环境:Spring2.0。如果包类没有 Quartz包,则需要加入到类路径。方法A:exte nds QuartzJobBea n1 :定义任务(extends QuartzJobBean )p ackage onlyfun.bb.Quartz;import org.quartz.JobExecutionContext;import org.s pringframework.scheduling.quartz.QuartzJobBean;p ublic cla

2、ss QuartzDemo extends QuartzJobBean private JobData jobData; /JobData 为自定义类p ublic void executelnternalQobExecutionContext context)System.out. pnntln(jobData.getData()+" is executed");p ublic JobData getJobData() return jobData;p ublic void setJobDataQobData jobData) this.jobData = jobData

3、;JobData.java: p ackage onlyfun.bb.Quartz;import java.util.Date;p ublic class JobData p ublic String getData()return "Data from JobData at "+new Date().toString();2:配置 <!- use Quartz -> <bean id="someData" class="onlyfun.bb.Quartz.JobData">v/bean> <bea

4、n id="jobDetailBean" class="org.s pringframework.scheduling.quartz.JobDetailBean"vprop erty name="jobClass" value-'onlyfun.bb.Quart z. QuartzDemo"></prop erty>vprop erty name="jobDataAsMa p"><ma p><entry key="jobData" va

5、lue-ref="someData">v/entry></ma p>v/prop erty> </bean> vbean id="si mpl eTriggerBean" class="org.s pringframework.scheduling.quartz.Si mpl eTriggerBean"vprop erty name="jobDetail" ref="jobDetailBean">v/prop erty>vprop erty

6、name="re peatinterval" value="2000">v/prop erty>vprop erty name="startDelay" value="1000">v/prop erty>vbeanv/bean>id="scheduledFactoryBean"class="org.s pringframework.scheduling.quartz.SchedulerFactoryBean">vproperty n ame

7、="triggers">vlist>vref bean="si mpl eTriggerBean"/v/list>v/prop erty> v/bean>注意:在 JobDetailBean的jobClass属性必须提供Job的类名称,而不是 Job类的实例。Job所需的数据可以在jobDataAsMap属性中设置。在任务的周期指定上,使用SimpleTriggerBean 类来指定,与 TimerTask指定方式类似。排定 Job 用 SchedulerFactoryBean 类。完成设置后,只要在启动 Spring并读取

8、定义文件后,计划任务就会执行。3 :测试P ackage onlyfun.bb.Quartz;import java.io.*;import org.quartz.Scheduler;import org.quartz.SchedulerExce ption;import org.s pringframework.context.A pp licationContext;import org.s pringframework.context.s uppo rt.Class PathXmlA pp licationContext; p ublic class TestQuartzDemo p u

9、blic static void main(Stnng args) throws lOExce ption / TODO Auto-generated method stubApp licationContext context=new Class PathXmlA pp licationContext("a pp licationContext.xml");System.out.printing 启动 Task:");System.out.println("请输入 exit 结束 Task:");/A处BufferedReader reade

10、r=new BufferedReader(new Inpu tStreamReader(System.in);while(true)if(reader.readLine().equals("exit") break; /此句可以放在A处Scheduler scheduler=(Scheduler)context.getBean("scheduledFactoryBean");try scheduler.shutdown(); catch (SchedulerExce ption e) / TODO Auto-generated catch block e

11、.p rintStackTrace();4 :测试分析: 使用SimpleTriggerBean类只能做简单Job与Job之间的执行周期指定,如果需要在指定时间执行,可以 使用 CronTriggerBean 类。修改配置文件如下:<!- use Quartz -> <bean id="someData" class="onlyfun.bb.Quartz.JobData"></bean> <bean id="jobDetailBean" class="org.s pringframe

12、work.scheduling.quartz.JobDetailBean"vprop erty name="jobClass" value="onlyfun.bb.Quart z. QuartzDemo"></prop erty>vprop erty name="jobDataAsMa p"><ma p><entry key="jobData" value-ref="someData"></entry></ma p>

13、;v/prop erty> </bean>vprop erty name="jobDetail" ref="jobDetailBean">v/prop erty>vproperty name="cronEx pression" value="0 37-38 15 * * ?"/> v/bean>vbeanid="scheduledFactoryBean"class="org.s pringframework.scheduling.quartz.

14、SchedulerFactoryBean"vproperty n ame="triggers">vlist>vref bean="cronTriggerBean"/>v/list>v/prop erty> v/bean>注意:CronTriggerBean 的cronExpression属性指定格式:至少6个时间元素,上面表示每天的15 : 37-38分执行1次任务。时间元素(按照顺序) 秒(0-59 ): 分(0-59 ): 小时(0-23 ): 每月第几天(1-31 ): 月(1-12 或 JAN-DEC

15、 ): 每星期第几天(1-7或SUN-SAT ): 年(1970-2099): 其中:不用设置的用” ”.(1)每月第几天和每星期第几天是互斥的,两个只能设置1个。如果有好几个时间点,可以使用”,”符号,例 如:”0 0 10,12,14 * * ? ”表示每天的10时,12时,14时执行Job.(2)对于连续时间可以使用”-”符号。例如:”0 10,12,14 1-15 * ? ”表示每月的1到15日10时,12时,14时执 行 Job.时间格式的年可以不用制定。例如”0 0 10,12,14 ? MON 2006 ”表示2006年每星期一的10时,12时,14 时执行Job.B :不需要继

16、承的任务制定方法使用 Spring 不一定需要继承 QuartzJobBean 类来定义1个 Job 类,可以使用MethodInvokingJobDetailFactoryBean来直接指定执行某个对象的方法。修改如下:1 :建立Job类(普通类)P ackage onlyfun.bb.Quartz;/*使用 MethodlnvokingJobDetailFactoryBean类制定任务:* 1 个 Job 类:没有继承 QuartzJobBean * author Administrator*/ p ublic class QuartzDemo2 p rivate JobData jobD

17、ata;p ublic void execute()System.out .p rintln(jobData.getData()+ "is executed");p ublic JobData getJobData() return jobData;p ublic void setJobDataQobData jobData) this.jobData = jobData;2:修改配置<bean id="someData" class="onlyfun.bb.Quartz.JobData">v/bean> <b

18、ean id="someJob" class="onlyfun.bb.Quart z. QuartzDemo2">vprop erty name="jobData" ref="someData"></prop erty><bean</bean>id="jobDetailBean"class="org.s pringframework.scheduling.quart z.MethodlnvokingJobDetailFactoryBean">vp

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论