package hvp.spring.quartz.bean; import java.util.Map; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.springframework.context.ApplicationContext; public class MyJob implements Job { @SuppressWarnings("unchecked") public void execute(JobExecutionContext jec) throws JobExecutionException { Map dataMap = jec.getJobDetail().getJobDataMap(); String size = (String) dataMap.get("size"); // 得到Spring的ApplicationContext,可以访问Spring里的任何Bean了. ApplicationContext ac = (ApplicationContext) dataMap .get("applicationContext"); System.out.println(size + ":工作里" + ac.toString()); }} package hvp.spring.quartz.bean; public class MyService { public void doJob() { System.out.println("in MyService.doJob()."); }} package hvp.spring.quartz.bean; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class TestQuartx { public static void main(String[] args){ String configPath = "hvp/spring/quartz/bean/quartzBean.xml"; ApplicationContext ctx = new ClassPathXmlApplicationContext(configPath); ctx.getBean("scheduler"); }} <? xml version="1.0" encoding="UTF-8" ?> < beans xmlns ="http://www.springframework.org/schema/beans" xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation ="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd" > < bean name ="jobDetail" class ="org.springframework.scheduling.quartz.JobDetailBean" > < property name ="jobClass" value ="hvp.spring.quartz.bean.MyJob" /> < property name ="jobDataAsMap" > < map > < entry key ="size" value ="10" /> </ map > </ property > < property name ="applicationContextJobDataKey" value ="applicationContext" /> </ bean > < bean id ="jobDetail_1" class ="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean" > < property name ="targetObject" ref ="myService" /> < property name ="targetMethod" value ="doJob" /> < property name ="concurrent" value ="false" /> </ bean > < bean id ="myService" class ="hvp.spring.quartz.bean.MyService" /> < bean id ="simpleTrigger" class ="org.springframework.scheduling.quartz.SimpleTriggerBean" > < property name ="jobDetail" ref ="jobDetail" /> < property name ="startDelay" value ="1000" /> < property name ="repeatInterval" value ="1000" /> < property name ="repeatCount" value ="1000" /> < property name ="jobDataAsMap" > < map > < entry key ="count" value ="10" /> </ map > </ property > </ bean > < bean id ="checkImagesTrigger" class ="org.springframework.scheduling.quartz.CronTriggerBean" > < property name ="jobDetail" ref ="jobDetail_1" /> < property name ="cronExpression" value ="0/5 * * * * ?" /> </ bean > < bean id ="scheduler" class ="org.springframework.scheduling.quartz.SchedulerFactoryBean" > < property name ="triggers" > < list > < ref bean ="checkImagesTrigger" /> < ref bean ="simpleTrigger" /> </ list > </ property > < property name ="schedulerContextAsMap" > < map > < entry key ="timeout" value ="30" /> </ map > </ property > < property name ="quartzProperties" > < props > < prop key ="org.quartz.threadPool.class" > org.quartz.simpl.SimpleThreadPool </ prop > < prop key ="org.quartz.threadPool.threadCount" > 10 </ prop > </ props > </ property > </ bean > </ beans >