package quartz.counter;
/**
* @ClassName: CounterJob
* @Description: TODO
* @author Zhou Shengshuai
* @date 2014年9月19日 下午2:33:45
*
*/
public class CounterJob {
public void count() {
System.out.println("Counter Job...");
}
}
package quartz.mapper;
/**
* @ClassName: MapperJob
* @Description: TODO
* @author Zhou Shengshuai
* @date 2014年9月19日 下午2:34:07
*
*/
public class MapperJob {
public void map() {
System.out.println("Mapper Job...");
}
}
package quartz;
import org.quartz.CronScheduleBuilder;
import org.quartz.CronTrigger;
import org.quartz.Job;
import org.quartz.JobBuilder;
import org.quartz.JobDataMap;
import org.quartz.JobDetail;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.TriggerBuilder;
import quartz.counter.CounterJob;
import quartz.mapper.MapperJob;
/**
* @ClassName: CounterMapper
* @Description: TODO
* @author Zhou Shengshuai
* @date 2014年9月19日 下午2:35:36
*
*/
public class CounterMapper implements Job {
private Scheduler scheduler = null;
private CounterJob counterJob = null;
private MapperJob mapperJob = null;
private String cronExpression = null;
public void setCounterJob(CounterJob counterJob) {
this.counterJob = counterJob;
}
public void setMapperJob(MapperJob mapperJob) {
this.mapperJob = mapperJob;
}
public void setCronExpression(String cronExpression) {
this.cronExpression = cronExpression;
}
public void setScheduler(Scheduler scheduler) {
this.scheduler = scheduler;
}
public void initial() {
JobDetail jobDetail = JobBuilder.newJob(CounterMapper.class).withIdentity("Counter", "Mapper").build();
jobDetail.getJobDataMap().put("counter", counterJob);
jobDetail.getJobDataMap().put("mapper", mapperJob);
CronTrigger cronTrigger = TriggerBuilder.newTrigger().withIdentity("Counter", "Mapper").withSchedule(CronScheduleBuilder.cronSchedule(cronExpression)).build();
try {
scheduler.scheduleJob(jobDetail, cronTrigger);
} catch (SchedulerException e) {
e.printStackTrace();
}
}
@Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
JobDataMap jobDataMap = jobExecutionContext.getMergedJobDataMap();
CounterJob counter = (CounterJob) jobDataMap.get("counter");
counter.count();
MapperJob mapper = (MapperJob) jobDataMap.get("mapper");
mapper.map();
}
public void destroy() {
}
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd">
<!-- 配置CounterMapper -->
<bean id="CounterMapper" class="quartz.CounterMapper" init-method="initial" destroy-method="destroy" scope="singleton">
<property name="scheduler" ref="Scheduler" />
<property name="counterJob" ref="CounterJob" />
<property name="mapperJob" ref="MapperJob" />
<property name="cronExpression" value="*/1 * * * * ?" />
</bean>
<!-- 配置Scheduler -->
<bean name="Scheduler" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
</bean>
<!-- 配置Counter -->
<bean name="CounterJob" autowire="no" class="quartz.counter.CounterJob">
</bean>
<!-- 配置Mapper -->
<bean name="MapperJob" autowire="no" class="quartz.mapper.MapperJob">
</bean>
</beans>
package quartz;
import org.springframework.context.support.FileSystemXmlApplicationContext;
/**
* @ClassName: Main
* @Description: TODO
* @author Zhou Shengshuai
* @date 2014年9月19日 下午3:06:44
*
*/
public class Main {
public static void main(String[] args) {
// 装载程序
final FileSystemXmlApplicationContext context = new FileSystemXmlApplicationContext("spring-quartz.xml");
// 添加钩子
Runtime.getRuntime().addShutdownHook(new Thread() {
@Override
public void run() {
// 销毁实例
context.getBeanFactory().destroySingletons();
}
});
}
}