Spring进行任务自动调度之quartz
转载:http://blog.163.com/guomaolin_gavin/blog/static/19961830720120755135680/
进行自动任务调度的方法有下面2种:------均要借助cron表达式---分别是:task和quartz
1,Quartz.这个框架是最强大的了。它是由opensymphony组织发开的。现在最新的版本是2.1.1下载地址www.quartz-scheduler.org
用它控制任务的自动调度有3部分!
1,任务(java代码Task.java------自己命名(类名))
2,触发器(在什么时候进行触发Trigger)
3,调度器(scheduler哪一个trigger调用那些任务)
实现代码是:
//调度器
schedulers=stdSchedulerFactory.getDefaulstScheduler();
//任务---也称工作类
JodDetailjd=newJodDetail("task","Scheduler.DEFAULT_GROUP",Task.class);
//触发器--值得一提的是:触发是有两种simpleTrigger和CronTrigger
//任务一共调度50次,每次间隔时间为200毫秒
Triggert=newSimpleTrigger("task","Scheduler.DEFAULT_GROUP",50,200)
scheduler.schedulerJod(jd,t);
scheduler.start();
结合Spring:使用xml配置----------------------------这里就会出现一个问题。如果你之前使用的是annocation那么就会有点麻烦。这个时候就要task也能实现你要的功能
<!--定义工作类和方法-->
<beanname="quartDetail"class="org.springframework.scheduling.quartz.JobDetailBean">
<propertyname="jobClass"value="QuartzJobBean子类"/>
<!--QuartzJobBean子类就是我们的工作类。我们的工作类是要继承JobDetailBean的(必须的)-->
</bean>
<!--定义触发器来管理任务Bean-->
<beanid="cronTriggerPunch"
class="org.springframework.scheduling.quartz.CronTriggerBean">
<propertyname="jobDetail">
<!--使用嵌套Bean的方式来定义任务Bean-->
<bean
class="org.springframework.scheduling.quartz.JobDetailBean">
<!--指定任务Bean的实现类也就是工作类-->
<propertyname="jobClass"
value="org.crazyit.hrsystem.schedule.PunchJob"/>
<!--为任务Bean注入属性-->
<propertyname="jobDataAsMap">
<map>
<entrykey="empMgr"value-ref="empManager"/>
</map>
</property>
</bean>
</property>
<!--指定Cron表达式:周一到周五7点、12点执行调度-->
<propertyname="cronExpression"
value="007,12?*MON-FRI"/>
</bean>
<!--执行实际的调度调度-->
<bean
class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<propertyname="triggers">
<list>
<!--里面写的就是任务触发器列表-->
<reflocal="cronTriggerPunch"/>
</list>
</property>
</bean>