下面配置片断使用JobDetailBean在Spring中配置一个JobDetail:
<bean name="jobDetail" class="org.springframework.scheduling.quartz.JobDetailBean"> <property name="jobClass" value="com.baobaotao.quartz.MyJob" /> <property name="jobDataAsMap">① <map> <entry key="size" value="10" /> </map> </property> <property name="applicationContextJobDataKey" value="applicationContext"/>② </bean>
这样,MyJob在运行时就可以通过JobDataMap访问到size和ApplicationContext了。来看一下MyJob的代码,如代码清单 8所示:
代码清单 8 MyJob
package com.baobaotao.quartz; … import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.springframework.context.ApplicationContext; public class MyJob implements Job { public void execute(JobExecutionContext jctx) throws JobExecutionException { Map dataMap = jctx.getJobDetail().getJobDataMap();①获取JobDetail关联的JobDataMap String size =(String)dataMap.get("size");② ApplicationContext ctx = (ApplicationContext)dataMap.get("applicationContext");③ System.out.println("size:"+size); dataMap.put("size",size+"0");④对JobDataMap所做的更改是否被会持久,取决于任务的类型 //do sth... } }