Spring支持一个开源任务排程框架---Quartz,记得以前和同学还在考虑如何自动发邮件的问题,如果有了这个 方法2: <?xml version="1.0" encoding="UTF-8"?>
<bean id="sayHelloJob" class="org.springframework.scheduling.quartz.JobDetailBean"> <property name="jobClass"> <value>test.timerTask.SayHelloTaskUsingQuartz</value> </property> </bean> <!-- 关键在如下两个触发器的配置 --> <!-- 类似于Java的简单触发器 --> <bean id="helloTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
<property name="jobDetail"> <ref bean="sayHelloJob"/> </property> <property name="startDelay"> <value>1000</value> </property> <property name="repeatInterval"> <value>3000</value> </property> </bean> <!-- 复杂触发器 --> <bean id="helloCronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail"> <ref bean="sayHelloJob"/> </property> <property name="cronExpression"> <!-- 关键在配置此表达式 --> <value>0 49 15 * * ?</value> </property> </bean>
<bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <ref bean="helloCronTrigger"/> </property> </bean>
当有任务触发时,spring会去调用quartzJob的execute()方法,在这个方法里我们就可以写一些我们自己的业务操作。 上面只是说了定时和任务出发时的处理,下面再看看如何动态的添加定时任务 package com.actmaps.scheduler; import java.text.ParseException; import org.apache.commons.logging.Log; /** /** } 对于复杂触发器的cronExpression,可借鉴linux的cron。 关于cronExpression的介绍:
0 6 * * * 每两个小时 0 */2 * * * 晚上11点到早上8点之间每两个小时,早上八点 0 23-7/2,8 * * * 每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点 0 11 4 * 1-3 1月1日早上4点 0 4 1 1 *
</beans> 这里的JobDetail使用的是JobDetailBean,这样直接实例化test.timerTask.SayHelloTaskUsingQuartz。它存在一个问题,当test.timerTask.SayHelloTaskUsingQuartz需要使用依赖注入时,显然,这样直接实例化是没法进行注入的。spring还提供了另一种方法,如下 <bean id="quartzJob" class="com.actmaps.scheduler.QuartzJob">
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "spring-beans.dtd" >
<beans> |
spring配置定时器方法2
最新推荐文章于 2024-08-08 18:50:33 发布
spring配置定时器方法2
2007-08-06 17:04