spring 使用xml配置文件实现quartz作业调度
No0:准备依赖
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>1.8.5</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>3.1.2.RELEASE</version>
</dependency>
No1:定义业务对象
@Service(value = "gameService")
public class GameServiceImpl implements IGameService{
/**
* 打印hello
*/
public void printHello(){
System.out.println("hello");
}
}
No2:调度业务
<bean id="musicService_jobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="gameService"/>
<property name="targetMethod" value="printHello"/>
</bean>
No3: 增加调度触发器
<bean id="cronTrigger" lazy-init="false" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="musicService_jobDetail"/>
<!--每天15点54分0秒开始,每隔2秒执行一次。-->
<property name="cronExpression" value="0/2 54/1 15 * * ?"/>
</bean>
No3:程执行器配置,用于任务注册
<bean id="executor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
<!--核心线程数-->
<property name="corePoolSize" value="10"/>
<!--最大线程数-->
<property name="maxPoolSize" value="100"/>
<!--队列最大长度-->
<property name="queueCapacity" value="500"/>
<!-- 线程池维护线程所允许的空闲时间 -->
<property name="keepAliveSeconds" value="3600" />
</bean>
No4: 设置调度
<bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="cronTrigger" />
</list>
</property>
<property name="taskExecutor" ref="executor"/>
</bean>
No5: 停止作业
CronTriggerBean trigger = (CronTriggerBean) scheduler.getScheduler().getTrigger("cronTrigger", Scheduler.DEFAULT_GROUP);
System.out.println(scheduler.getScheduler().isShutdown());
scheduler.getScheduler().shutdown();
System.out.println(scheduler.getScheduler().isShutdown());