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>

相关推荐