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