最近在项目中用到 了Spring的JobDetailBean,可以在JobDetailBean中调用QuartzJobBean,可以通过jobDataAsMap传递参数:
如:QuartzJobBean的实例TestTimeOutJob :
import java.util.HashMap;
import java.util.Map;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.SchedulerException;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.ApplicationContext;
import org.springframework.scheduling.quartz.QuartzJobBean;
public class TestTimeOutJob extends QuartzJobBean {
private int id;
private String name;
public void setId(int id) {
this.id = id;
}
public void setname(String name) {
this.name = name;
}
@Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
try {
System.out.println("---------id: " + id);
System.out.println("---------name: " + name);
} catch (BeansException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SchedulerException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
}
spring bean.xml中配置:
<bean id="testTimeOutJob" class="org.springframework.scheduling.quartz.JobDetailBean" scope="prototype">
<property name="jobClass" value="xx.xx.xx.TeployTimeOutJob"></property>
</bean>
启动job,通过jobDataAsMap传递参数:
//通过spring的注入获取TestTimeOutJob实例
JobDetailBean testJob = context.getBean("testTimeOutJob", JobDetailBean.class);
JobDataMap jobDataMap = new JobDataMap();
jobDataMap.put("id", "1");
jobDataMap.put("name", "test");
testJob.setJobDataMap(jobDataMap);
schedulerUtil.deployTimeOut(scheduler, deployJob);
//Util类,启动job
public class SchedulerUtil {
public void deployTimeOut(Scheduler scheduler, JobDetailBean job) {
try {
job.setName("test_timeout");
//10分钟调用一次
Trigger trigger = new SimpleTrigger(job.getName() + "_trigger", new Date(Calendar.getInstance().getTimeInMillis() + (1000 * 60 * 10)));
//调用job(TestTimeOutJob)
scheduler.scheduleJob(job, trigger);
} catch (SchedulerException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
分享到:
相关推荐
class="org.springframework.scheduling.quartz.JobDetailBean"> value="com.electricity.BIZ.MapOutTime"> </property> <property name="jobDataAsMap"> <map> <entry key="biz" value-ref="timesBiz">...
JobDetailBean 是 Spring 定时器中的另一个核心组件,它负责定义任务的执行细节。通过设置 JobDetailBean 的 jobClass 属性,可以指定任务的执行类。 例如,以下代码定义了一个 JobDetailBean,它将执行 ...
### Spring 定时器知识点详解 #### 一、Spring 定时器概述 Spring 框架提供了多种机制来支持定时任务的实现,这其中包括基于 Java 的标准 `java.util.Timer` 和更为强大的 Quartz 调度框架的支持。本文档将详细...
这两种定时器在Spring中的使用和配置有所不同,各有优缺点,适合不同的应用场景。 1. **Java Timer定时** Java Timer定时器是Java标准库的一部分,使用相对简单。要在Spring中使用,首先需要创建一个继承自`...
### Spring定时器实现详解 #### 一、Spring定时器简介 Spring框架提供了强大的定时任务管理功能,这使得开发者能够方便地在系统中实现各种复杂的定时任务需求。其中一种常用的技术方案是结合Quartz来实现定时任务...
<bean id="autoSendMail" class="org.springframework.scheduling.quartz.JobDetailBean"> <value>com.ftssh.outsourcing.web.action.outsourcing.AutoSendMailByTime</value> <property name="jobDataAsMap">...
#### 一、Spring定时器的两种实现方式概述 在Java Spring框架中,开发者有多种选择来实现定时任务的功能,其中最为流行的两种方式分别是使用Java自带的`Timer`类以及OpenSymphony的Quartz定时器。本文将重点探讨...
【Spring与QuartZ集成定时器】是一种在Java应用程序中实现定时任务的常见方式,它结合了Spring框架的灵活性和Quartz的定时功能。Quartz是一个开源的作业调度框架,可以用于创建、调度和执行重复性的任务。Spring则...
- `JobDetailBean`:定义了定时任务的基本信息,如任务类(`JudgeDateQuartzJobBean`)和传递给任务的参数(在`jobDataAsMap`中设置`timeout`为0)。 - `CronTriggerBean`:用于定义触发任务执行的CRON表达式,`...
<bean name="job1" class="org.springframework.scheduling.quartz.JobDetailBean"> <property name="jobDataAsMap"> <!-- 配置触发器 --> <bean id="simpleTrigger" class="org.springframework....
##### 定时器的使用:Spring与Quartz的集成 Spring支持多种定时任务的实现方案,其中较为常见的是与Quartz的集成。Quartz是一个功能强大的作业调度库,可以方便地与Spring框架集成,用于实现复杂的定时任务需求。 ...
<bean id="MyTimeSpringJob" class="org.springframework.scheduling.quartz.JobDetailBean"> <property name="jobClass" value="com.zhangkeinfo.spring.time.UpdateTime" /> <property name="jobDataAsMap"> ...