在Spring中使用Quartz实现定时任务

本文介绍了一种使用Spring框架下的Quartz实现定时任务的方法。通过XML配置文件定义了任务触发器和详细信息,并设置了定时执行策略。此外还提供了一个具体的定时任务类实现示例。

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

今天在开发中遇到定时任务的问题,最初尝试在web.xml中配置一个Timer监听器来实现,但是,又和Jbpm的定时任务相冲突,请教公司一高手,说:用这个方式是不提倡的,最好用spring来实现。
方法如下:
XML配置如下:

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

<bean id="workingYearQuartzDetail" class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass" value="com.zzxy.egov.ems.task.RedCaseTimerQuartz"/>
</bean>

<!-- 每年每月每日0点10分执行 -->
<bean id="workingYearTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="workingYearQuartzDetail"/>
<property name="cronExpression" value="0 10 0 * * ?"/>
</bean>

注:cronExpression配置说明如下:

[b]字段 允许值 允许的特殊字符 [/b]
秒 0-59 , - * /
分 0-59 , - * /
小时 0-23 , - * /
日期 1-31 , - * ? / L W C
月份 1-12 或者 JAN-DEC , - * /
星期 1-7 或者 SUN-SAT , - * ? / L C #
年(可选) 留空, 1970-2099 , - * /

其中RedCaseTimerQuartz类要继承QuartzJobBean类

public class RedCaseTimerQuartz extends QuartzJobBean {

protected final transient Log logger = LogFactory.getLog(this.getClass());

private boolean isRunning = false;

private String name = "自动查询超期件";

@Override
protected void executeInternal(JobExecutionContext arg0)
throws JobExecutionException {
if(!isRunning){
this.isRunning = true;
String msg = null;

TimerTaskService timerTaskService = (TimerTaskService)BeanUtil.getBean("timerTaskService");
try {
timerTaskService.execInsertRedCaseByTimer();
msg = "定时任务‘" + name + "’执行成功!";
logger.info(msg);
} catch (Exception e) {
msg = "定时任务‘" + name + "’执行失败。";
logger.warn(msg, e);
e.printStackTrace();
}
}else{
logger.warn("定时任务‘" + name + "’正在执行。");
}
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值