SSH中Spring Quartz定时器的用法(ZT)

本文详细介绍如何使用Spring框架配置并实现定时任务,包括下载所需jar包、编写定时器业务方法、配置定时任务及时间表达式的含义等。针对常见的异常问题也提供了相应的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一,首先下载quartz-1.6.0.jar架包,到lib目录下

二,写你自己定时器业务方法

package com.lbnet.lzx.timing;

import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.scheduling.quartz.QuartzJobBean;

import com.lbnet.lzx.service.IOrderService;

public class OrderNoRefact extends QuartzJobBean{
private static BeanFactory factory = new ClassPathXmlApplicationContext("applicationContext-*.xml");
@Override
protected void executeInternal(JobExecutionContext arg0)
throws JobExecutionException {
// TODO Auto-generated method stub

IOrderService orderdao=(IOrderService)factory.getBean("OrderServiceImpl");
System.out.println("订单超时!");
orderdao.updateOrderTimeOver();


}
}
三。在spring文件中进行配置

配置定时任务

<bean id="SchedulerTask3" class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass">
<value>com.lbnet.lzx.timing.OrderNoRefact</value>
</property>
</bean>

配置定时时间
<bean id="SchedulerTaskTrigger3" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="SchedulerTask3" />
<property name="cronExpression">
<value>0 0/30 0/1 * * ?</value>
</property>
</bean>
开启定时任务

<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="SchedulerTaskTrigger3" />

</list>
</property>
</bean>

四。一些定时参数意义

0 0/30 0/1 * * ? 代表每天每30分钟运行一次

0 0/3 0/1 * * ? 代表每天每3分钟运行一次

0 11 23 * * ? 代表每天晚上23:11运行一次

五。如果重启报异常

org.apache.commons.collections.SetUtils.orderedSet(Ljava/util/Set;)Ljava/util/Set;

请把commons-collections-2.1.1.jar,checkstytle-all.jar删掉,然后加入commons-collections.jar包就OK了

==============================================

Spring调度任务的运行时间可通过TriggerBean的属性进行配置,一般情况下不是使用SimpleTriggerBean就是使用

CronTriggerBean,这两个TriggerBean配置说明如下:

1)SimpleTriggerBean的配置:

<bean id="trigger.jobdetail"


class="org.springframework.scheduling.quartz.SimpleTriggerBean">

<property name="jobDetail">


<ref bean="factory" />


</property>


<property name="startDelay">


<!-- 10 seconds 单位是毫秒 默认是10秒钟-->


<value>10000</value>


</property>


<property name="repeatInterval">


<!-- repeat every 600 seconds 单位是毫秒 默认是10分钟-->


<value>60000</value>


</property>


</bean>

定时任务所在的bean的配置

<bean id="factory"


class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">

<property name="targetObject">


<ref bean="dailyjob.processor" />


</property>


<property name="targetMethod">


<value>process</value>


</property>


</bean>

2)CronTriggerBean的配置:

这里设置每隔一分钟执行一次。SimpleTriggerBean只能指定工作执行的频率,不能指定工作执行的具体时间。

比方说要求在每天的晚上10点执行某个具体的工作,那么SimpleTriggerBean就不能满足了,这时需要使用另外

一个bean:CronTriggerBean。


<bean id="Detail"

class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">


<property name="targetObject"><ref bean="mainServer"/></property>


<property name="targetMethod"><value>excute</value></property>


</bean>

设置触发器


<bean id="HRTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">


<property name="jobDetail"> <ref bean="Detail"/></property>


<property name="cronExpression"> <value>0/10 * * * * ?</value> </property>


</bean>

<!--启动触发器-->


<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">

<property name="triggers">


<list>

<!--添加触发器 -->


<ref local="HRTrigger" />


</list>


</property>

</bean>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值