我当时配置的方式是,可能大部分人的配置方式和我类似,如:
1、配置spring-quartz.xml的配置文件,内容如下
<!-- 声明任务工厂 -->
<bean id="scheduler" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation" value="classpath:quartz.properties" />
<property name="applicationContextSchedulerContextKey" value="applicationContextKey"/>
</bean>
可以看到 scheduler的对象来源是spring的类 org.springframework.scheduling.quartz.SchedulerFactoryBean
配置数据源 ref="dataSource" ,加载quartz的配置文件
<property name="configLocation" value="classpath:quartz.properties" />
通过quartz的上下文获取spring上下文的配置
<property name="applicationContextSchedulerContextKey" value="applicationContextKey"/>
2、quartz的任务实现方式ScheduleJobServiceImpl
package com.credithc.accent.service.impl; import java.util.ArrayList; import java.util.List; import java.util.Set; import org.quartz.CronScheduleBuilder; import org.quartz.CronTrigger; import org.quartz.JobBuilder; import org.quartz.JobDetail; import org.quartz.JobKey; import org.quartz.Scheduler; import org.quartz.SchedulerException; import org.quartz.Trigger; import org.quartz.TriggerBuilder; import org.quartz.TriggerKey; import org.quartz.impl.matchers.GroupMatcher; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.credithc.accent.model.ScheduleJob; import com.credithc.accent.service.ScheduleJobService; /** * 定时任务 service * @author ty * @date 2015年1月13日 */ @Service("scheduleJobService") public class ScheduleJobServiceImpl implements ScheduleJobService{ @Autowired private Scheduler scheduler; /** * 添加定时任务 * @param ScheduleJob */ public void add(ScheduleJob scheduleJob){ @SuppressWarnings("rawtypes") Class job = null; try { job = Class.forName(scheduleJob.getClassName()); } catch (ClassNotFoundException e1) { e1.printStackTrace(); } @SuppressWarnings("unchecked") JobDetail jobDetail = JobBuilder.newJob(job).withIdentity(scheduleJob.getName(), scheduleJob.getGroup()).build(); //表达式调度构建器(可判断创建SimpleScheduleBuilder) CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(scheduleJob.getCronExpression()); jobDetail.getJobDataMap().put("scheduleJob", sche