Quartz可以用来执行任务调度功能,如间隔一定时间调用执行任务。用起来还是蛮方便的。只要将你要调用的类配置到Spring配置文件即可。
在Spring的配置文件中配置Quartz。
1 <!-- 要调用的工作类 --> 2 <bean id="quartzJob" class="com.aisino.projects.supply.task.Quartzjob"></bean> 3 <!-- 定时任务活动生效与失效 --> 4 <bean id="jobtask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> 5 <!-- 调用的类 --> 6 <property name="targetObject"> 7 <ref bean="quartzJob"/> 8 </property> 9 <!-- 调用类中的方法 --> 10 <property name="targetMethod"> 11 <value>Job</value> 12 </property> 13 </bean> 14 <!-- 定义触发时间 --> 15 <bean id="doTime" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"> 16 <property name="jobDetail"> 17 <ref bean="jobtask"/> 18 </property> 19 <!-- cron表达式 --> 20 <property name="cronExpression"> 21 <value>0 1 0 * * ?</value> 22 </property> 23 </bean> 24 <!-- 总管理类 如果将lazy-init='false'那么容器启动就会执行调度程序 --> 25 <bean id="startQuertz" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> 26 <property name="triggers"> 27 <list> 28 <ref bean="doTime"/> 29 </list> 30 </property> 31 </bean>
如上图,在第2行配置要调用的类,第11行配置要调用的方法,第21行配置要调用的时间,即可。
时间的话。这里用的corn表达式。各参数如下:
字段 允许值 允许的特殊字符
秒 0-59 , - * /
分 0-59 , - * /
小时 0-23 , - * /
日期 1-31 , - * ? / L W C
月份 1-12 或者 JAN-DEC , - * /
星期 1-7 或者 SUN-SAT , - * ? / L C #
年(可选) 留空, 1970-2099 , - * /
“?”字符:表示不确定的值
“,”字符:指定数个值
“-”字符:指定一个值的范围
“/”字符:指定一个值的增加幅度。n/m表示从n开始,每次增加m
“L”字符:用在日表示一个月中的最后一天,用在周表示该月最后一个星期X
“W”字符:指定离给定日期最近的工作日(周一到周五)
“#”字符:表示该月第几个周X。6#3表示该月第3个周五
所以:上面例子里表示的就是:每天00点01分的时候执行一次Quartzjob类的Job方法。如果需要多个任务调度,只需要重复写上面4个bean中的第2、3个,然后将触发时间配置进第4个bean的list里即可。当然前提是你的调度都要存在一个类里~