使用quartz实现定时器功能
Posted 三生有幸呵呵哒
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用quartz实现定时器功能相关的知识,希望对你有一定的参考价值。
首先导入两个包
1 <dependency> 2 <groupId>org.quartz-scheduler</groupId> 3 <artifactId>quartz</artifactId> 4 <version>2.2.2</version> 5 </dependency> 6 <dependency> 7 <groupId>org.quartz-scheduler</groupId> 8 <artifactId>quartz-jobs</artifactId> 9 <version>2.2.2</version> 10 </dependency>
然后写一个类用来当作定时器类,同时写一个方法为定时器执行的方法:
1 package com.practice.prac.service.Impl; 2 3 import org.springframework.stereotype.Component; 4 5 @Component 6 public class TestTime { 7 8 public void print(){ 9 System.out.println("----------"); 10 } 11 }
这里是TestTime类和print方法
在xml文件中定义以下bean:
1 <!-- 以下为quartz实现定时器 --> 2 3 <!-- 指明作为定时器的类 --> 4 <bean id="TestTime" class="com.practice.prac.service.Impl.TestTime"></bean> 5 <!-- 配置对应的信息 --> 6 <bean id="TestTimeDetail" 7 class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> 8 <!-- 指定任务类 --> 9 <property name="targetObject" ref="TestTime" /> 10 <!-- 指定任务执行的方法 --> 11 <property name="targetMethod" value="print" /> 12 </bean> 13 <!-- 配置触发器 --> 14 <bean id="TestTimeTrigger" 15 class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"> 16 <property name="jobDetail" ref="TestTimeDetail" /> 17 <!-- 每5秒运行一次 --> 18 <property name="cronExpression" value="0/5 * * * * ?" /> 19 </bean> 20 21 <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> 22 <property name="triggers"> 23 <list> 24 <!-- <ref bean="exampleJobTrigger" /> --> 25 <ref bean="TestTimeTrigger" /> 26 </list> 27 </property> 28 </bean>
其中名字跟ref对应,指定任务类和指定任务执行的方法对应上就可以了。
定时触发在触发器的cronExpression处定义,具体表达式含义在另一篇文章中。
以上是关于使用quartz实现定时器功能的主要内容,如果未能解决你的问题,请参考以下文章
SpringBoot整合quartz实现动态启动,停止定时任务功能
quartz任务调度怎么实现远程控制Job,麻烦大哥大嫂帮忙看下