使用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实现定时器功能的主要内容,如果未能解决你的问题,请参考以下文章

Quartz实现动态定时任务

Spring与Quartz的整合实现定时任务调度

SpringBoot整合quartz实现动态启动,停止定时任务功能

quartz任务调度怎么实现远程控制Job,麻烦大哥大嫂帮忙看下

SpringBoot之旅 -- 定时任务两种(Spring Schedule 与 Quartz 整合 )实现

Spring整合quartz实现定时动态任务