Spring + Quartz 响应定时任务简单案例
2017-07-21 12:12
281 查看
概述:需求微信token两个小时失效,所以需要一个定时任务去取最新的Token
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.3.0</version>
</dependency>
Spring framework相关jar包 和commons-logging.jar
private static int counter = 0;
protected void execute() {
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
long ms = System.currentTimeMillis();
System.out.println("\t\t" + sf.format(new Date(ms)));
System.out.println("(" + counter++ + ")");
}
}
总结:其实就是一个简单类
类似一个工厂有很多需要自动触发的任务,而每个任务触发事件和时间不同,如何统一管理
它有总厂长, 分厂,车间主任,工人
对应quart就是
SchedulerFactoryBean
------》CronTriggerFactoryBean------》MethodInvokingJobDetailFactoryBean---》TakeWeiXinTokenQtz(你创建的bean)
SchedulerFactoryBean
:里面triggers ,可以触发一系列事情
CronTriggerFactoryBean: 表示什么事情?发生规则(时间相关的)
MethodInvokingJobDetailFactoryBean
:表示目标对象和目标的方法
TakeWeiXinTokenQtz:你就需要创建这样bean和execute(方法)、
<!-- 配置定时任务 -->
<bean id="takeWeiXinTokenQtz" class="com.rinlink.intelligent.weixin.task.TakeWeiXinTokenQtz"/>
<bean id="springQtzJobMethod" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject">
<ref bean = "takeWeiXinTokenQtz"/>
</property>
<property name="targetMethod">
<value>execute</value>
</property>
</bean>
<!-- 调用触发器 -->
<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="springQtzJobMethod"/>
<!-- run every morning at 6 AM -->
<property name="cronExpression" value="*/5 * * * * ?"/>
</bean>
<!-- 调度工厂 -->
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="cronTrigger"/>
</list>
</property>
</bean>cronExpression :就是配置触发规则,这里是每5秒触发一次,可以自己百度一下很多的。
[org.quartz.core.QuartzSchedulerThread] - batch acquisition of 1 triggers
2017-07-21 11:46:10
(1)
[org.quartz.core.QuartzSchedulerThread] - batch acquisition of 1 triggers
[org.quartz.core.JobRunShell] - Calling execute on job DEFAULT.springQtzJobMethod
2017-07-21 11:46:15
(2)
注意:web项目或者你要读取该配置文件。
1、需要引用jar 包
<dependency><groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.3.0</version>
</dependency>
Spring framework相关jar包 和commons-logging.jar
2、写一个执行的任务类
public class TakeWeiXinTokenQtz {private static int counter = 0;
protected void execute() {
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
long ms = System.currentTimeMillis();
System.out.println("\t\t" + sf.format(new Date(ms)));
System.out.println("(" + counter++ + ")");
}
}
总结:其实就是一个简单类
3、配置一个定时任务
它的思想就是基于工厂模式类似一个工厂有很多需要自动触发的任务,而每个任务触发事件和时间不同,如何统一管理
它有总厂长, 分厂,车间主任,工人
对应quart就是
SchedulerFactoryBean
------》CronTriggerFactoryBean------》MethodInvokingJobDetailFactoryBean---》TakeWeiXinTokenQtz(你创建的bean)
SchedulerFactoryBean
:里面triggers ,可以触发一系列事情
CronTriggerFactoryBean: 表示什么事情?发生规则(时间相关的)
MethodInvokingJobDetailFactoryBean
:表示目标对象和目标的方法
TakeWeiXinTokenQtz:你就需要创建这样bean和execute(方法)、
<!-- 配置定时任务 -->
<bean id="takeWeiXinTokenQtz" class="com.rinlink.intelligent.weixin.task.TakeWeiXinTokenQtz"/>
<bean id="springQtzJobMethod" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject">
<ref bean = "takeWeiXinTokenQtz"/>
</property>
<property name="targetMethod">
<value>execute</value>
</property>
</bean>
<!-- 调用触发器 -->
<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="springQtzJobMethod"/>
<!-- run every morning at 6 AM -->
<property name="cronExpression" value="*/5 * * * * ?"/>
</bean>
<!-- 调度工厂 -->
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="cronTrigger"/>
</list>
</property>
</bean>cronExpression :就是配置触发规则,这里是每5秒触发一次,可以自己百度一下很多的。
4、日志:
[org.quartz.core.JobRunShell] - Calling execute on job DEFAULT.springQtzJobMethod[org.quartz.core.QuartzSchedulerThread] - batch acquisition of 1 triggers
2017-07-21 11:46:10
(1)
[org.quartz.core.QuartzSchedulerThread] - batch acquisition of 1 triggers
[org.quartz.core.JobRunShell] - Calling execute on job DEFAULT.springQtzJobMethod
2017-07-21 11:46:15
(2)
注意:web项目或者你要读取该配置文件。
相关文章推荐
- Spring+Quartz实现定时任务的简单方法
- 简单介绍Spring+Quartz实现定时任务的配置方法
- Spring与Quartz集成配置实现简单定时任务调度
- SpringBoot整合Quartz定时任务 的简单实例 2
- Spring与Quartz集成配置实现简单定时任务调度
- Spring+Quartz定时任务,简单的小例子,新手完全手册
- Spring+Quartz定时任务简单介绍
- Quartz + Spring 简单实现定时任务
- Quartz和Spring Task定时任务的简单应用和比较
- Quartz + Spring 简单实现定时任务
- spring+Quartz+maven 简单的定时任务
- 使用quartz+spring实现简单的可配置化的定时任务(可和数据库配套使用)
- SpringBoot整合Quartz定时任务 的简单实例
- spring+Quartz+maven 简单的定时任务
- Quartz定时任务简单demo及与Spring整合
- Spring+Quartz定时任务,简单的小例子,新手完全手册
- Spring Quartz简单例子,定时任务
- Spring与Quartz集成实现定时调度任务的简单使用
- Quartz + Spring 简单实现定时任务
- Quartz和Spring Task定时任务的简单应用和比较