quartz 调度
1、POI文件中导入包
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>1.8.5</version>
<exclusions>
<exclusion>
<artifactId>slf4j-api</artifactId>
<groupId>org.slf4j</groupId>
</exclusion>
</exclusions>
</dependency>
2、spring.xml 中配置
《 jobtaskA 为 jobName》
<bean id="jobtaskA" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="automaticAssignQuartzJob"/>
<property name="targetMethod" value="automaticAssignTask"/>
</bean>
<bean id="doTimeA" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="jobtaskA"/>
<property name="startDelay" value="0"/><!-- 启动即开始执行 -->
<property name="cronExpression" value="* * * ? * *" /><!-- 不间断执行 -->
</bean>
<bean id="startQuertz" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="doTimeA"/>
</list>
</property>
</bean>
3、service实现类中
例如: @Service("automaticAssignQuartzJob")
方法:public void automaticAssignTask(); //实现类中执行方法
4、若中途需要停止该任务一段时间
Scheduler scheduler = schedulerFactoryBean.getScheduler();
scheduler.pauseJob("jobtaskA", Scheduler.DEFAULT_GROUP); //暂停
Thread.sleep(15*60*1000); //暂停15分钟后恢复
scheduler.resumeJob("jobtaskA", Scheduler.DEFAULT_GROUP);//恢复
注:(1). schedulerFactoryBean 是通过spring注解初始化的
即:@Autowired
private SchedulerFactoryBean schedulerFactoryBean;
(2). Scheduler.DEFAULT_GROUP是默认的分组名,也可以在spring中设定分组名
例如:<bean id="myTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="name" value="work_default_name"/>
<property name="group" value="work_default"/>
<property name="jobDetail">
<ref bean="jobDetail" />
</property>
<property name="cronExpression">
<value>0/5 * * * * ?</value>
</property>
</bean>
(3).不能直接用 Thread.sleep(15*60*1000); 停止某一任务,这样会把项目中所有在执行的任务都停止
5、任务的暂停、恢复等方法可参考:http://blog.csdn.net/xpsharp/article/details/19289797