Spring和quartz整合的入门使用教程
Quartz的maven依赖
<!-- quartz 的jar -->
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.1</version>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz-jobs</artifactId>
<version>2.2.1</version>
</dependency>
方法一
基于特定基类 编写任务类,该类需要继承自QuartzJobBean
package com.sys.task; import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.scheduling.quartz.QuartzJobBean; /**
* @Author:jimisun
* @Description:
* @Date:Created in 9:36 2018/8/1
* @Modified By:
*/
public class QuartzTestJob extends QuartzJobBean { public QuartzTestJob() {
super();
} private static final Logger logger = LoggerFactory.getLogger(QuartzTestJob.class);
private Integer timeout; //调度工厂实例化后,经过timeout时间开始执行调度
public void setTimeout(Integer timeout) {
this.timeout = timeout;
} @Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
logger.info("定时任务1进行中.......");
} }
Spring中配置Quartz
<!--开源作业调度框架
org.springframework.scheduling.quartz.JobDetailBean有两个属性. jobClass属性即我们在java代码中定义的任务类. jobDataAsMap属性即该任务类中需要注入的属性值.-->
<bean name="quartzTestJob1" class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
<property name="jobClass" value="com.sys.task.QuartzTestJob"/>
<property name="jobDataAsMap">
<map>
<entry key="timeout" value="0"/>
</map>
</property>
</bean>
<!--Cron表达式触发器
Quartz的作业触发器有两种(两种任选其一就行) org.springframework.scheduling.quartz.SimpleTriggerFactoryBean:只支持按照一定频度调用任务,如每隔30分钟运行一次. org.springframework.scheduling.quartz.CronTriggerFactoryBean:支持到指定时间运行一次,如每天12:00运行一次等-->
<bean id="cronTrigger1" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="quartzTestJob1"/>
<property name="cronExpression" value="0/5 * * * * ?"/>
</bean>
<!--按照一定频率的触发器-->
<!-- <bean id="cronTrigger1" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
<property name="jobDetail" ref="quartzTestJob1"/>
<property name="startDelay" value="0"/>
<property name="repeatInterval" value="2000"/>
</bean>-->
<!--配置调度工厂-->
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<!--<ref bean="simpleTrigger"/>-->
<ref bean="cronTrigger1"/>
</list>
</property>
</bean>
执行结果
DEBUG [org.springframework.scheduling.quartz.SchedulerFactoryBean#0_Worker-3] - Calling execute on job DEFAULT.quartzTestJob1
DEBUG [org.springframework.scheduling.quartz.SchedulerFactoryBean#0_QuartzSchedulerThread] - batch acquisition of 1 triggers
INFO [org.springframework.scheduling.quartz.SchedulerFactoryBean#0_Worker-3] - 定时任务1进行中.......
方法二
不基于特定的基类 编写普通的方法类
package com.sys.task; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; /**
* @Author:jimisun
* @Description:
* @Date:Created in 9:36 2018/8/1
* @Modified By:
*/
public class QuartzTestJob3 { private static final Logger logger = LoggerFactory.getLogger(QuartzTestJob3.class); public void executeJob() {
logger.info("定时任务3进行中.......");
}
}
在spring配置文件中配置作业类MethodInvokingJobDetailFactoryBean、作业调度的触发方式(触发器)、调度工厂
<!--MethodInvokingJobDetailFactoryBean,有两个关键属性:targetObject指定任务类.targetMethod指定运行的方法.-->
<bean name="quartzTestJob3" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject">
<bean class="com.sys.task.QuartzTestJob3"/>
</property>
<property name="targetMethod" value="executeJob"/>
<!--作业不并发调度-->
<property name="concurrent" value="false"/>
</bean>
<!--Cron表达式触发器-->
<bean id="cronTrigger1" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="quartzTestJob3"/>
<property name="cronExpression" value="0/5 * * * * ?"/>
</bean>
<!--配置调度工厂-->
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<!--<ref bean="simpleTrigger"/>-->
<ref bean="cronTrigger1"/>
</list>
</property>
</bean>
执行结果
DEBUG [org.springframework.scheduling.quartz.SchedulerFactoryBean#0_Worker-6] - Calling execute on job DEFAULT.quartzTestJob3
INFO [org.springframework.scheduling.quartz.SchedulerFactoryBean#0_Worker-6] - 定时任务3进行中.......
DEBUG [org.springframework.scheduling.quartz.SchedulerFactoryBean#0_QuartzSchedulerThread] - batch acquisition of 1 triggers
文章中测试学习来源自博文https://www.cnblogs.com/hafiz/p/6159280.html
Spring和quartz整合的入门使用教程的更多相关文章
- spring与quartz整合实现分布式动态创建,删除,改变执行时间定时任务(mysql数据库)
背景:因为在项目中用到了定时任务,当时想到了spring的quartz,写完发现费了很大功夫,光是整合就花了一上午,其中最大的问题就是版本问题,项目中用的是spring3.2.8的版本,查阅发现,3. ...
- spring与quartz整合
这周学习了quartz定时任务,现在进行总结一下.首先要认识定时任务中几个关键接口,以及各个接口之间是如何联系起来的. 1.关键接口 (1)Scheduler,任务调度的API,它可以用来启动或者终 ...
- 初识spring与quartz整合实现定时任务
参考资料: http://kevin19900306.iteye.com/blog/1397744 引用自别人的博客: 特别注意一点,与Spring3.1以下版本整合必须使用Quartz1,最初我拿2 ...
- Spring和Quartz整合实现定时任务调度
在Spring中可以很方便的使用Quartz来实现定时任务等功能,Quartz主要就是Schedule(任务调度器),Job(作业任务)和Trigger(触发器)三者的关系. 实现方式有多种,在此就介 ...
- JDK、Spring、Quartz等几种不同定时器的用法,以及cronExpression表达式定义
referenc:https://blog.csdn.net/clementad/article/details/42042111 下面介绍几种常用的定时器及其实现方法: 第一种:Timer和Time ...
- Spring入门详细教程(四)
前言 本篇紧接着spring入门详细教程(三),建议阅读本篇前,先阅读第一篇,第二篇以及第三篇.链接如下: Spring入门详细教程(一) https://www.cnblogs.com/jichi/ ...
- Spring入门详细教程(二)
前言 本篇紧接着spring入门详细教程(一),建议阅读本篇前,先阅读第一篇.链接如下: Spring入门详细教程(一) https://www.cnblogs.com/jichi/p/1016553 ...
- spring入门详细教程(五)
前言 本篇紧接着spring入门详细教程(三),建议阅读本篇前,先阅读第一篇,第二篇以及第三篇.链接如下: Spring入门详细教程(一) https://www.cnblogs.com/jichi/ ...
- Spring入门详细教程(三)
前言 本篇紧接着spring入门详细教程(二),建议阅读本篇前,先阅读第一篇和第二篇.链接如下: Spring入门详细教程(一) https://www.cnblogs.com/jichi/p/101 ...
随机推荐
- django abstract base class ---- 抽象基类
抽象蕨类用于定义一些同享的列.类本身并不会在数据库端有表与之对应 一.例子: 1.定义一个叫Person 的抽象基类.Student 继承自Person from django.db import m ...
- IIS攻击与安全加固实例分析
IIS作为一款流行的Web服务器,在当今互联网环境中占有很大的比重,绝大多数的asp.asp.net网站都运行在它上面.因此,也引来了无数 黑客们关注的目光.目前针对IIS的攻击技术已经非常成熟,而且 ...
- mount -o remount,rw / (这是个求命的命令)
当系统无法启动的时候.我们会前进入单用户模式(正常情况下单用户莫式是权限是正常的,只在在无法启动的情况下, 再进入单用户模式,权限才会是只读),这时候没有对文件的修改权限(所有的文件都是只读) 用这条 ...
- php的ord函数——解决中文字符截断问题
php的ord函数——解决中文字符截断问题 分类: PHP2014-11-26 12:11 1033人阅读 评论(0) 收藏 举报 utf8字符截取 函数是这样定义的: int ord ( strin ...
- iOS开发Swift篇—(七)函数
iOS开发Swift篇—(七)函数 一.函数的定义 (1)函数的定义格式 1 func 函数名(形参列表) -> 返回值类型 { 2 // 函数体... 3 4 } (2)形参列表的格式 形参名 ...
- JDK默认使用的垃圾回收器
查看方法java -XX:+PrintCommandLineFlags -version 引用<深入理解Java虚拟机:JVM高级特性与最佳实践>的介绍: 所以,jdk8环境下,默认使用 ...
- js in
定义: in操作符用来判断某个属性属于某个对象,可以是对象的直接属性,也可以是通过prototype继承的属性.(参见hasOwnProperty) 注意事项: n 对于一般的对象属性 ...
- PDF文件的加载及展示
项目需要显示PDF文件,于是遍寻了网络,发现的方法以下几种: 1.使用UIWebView加载,没啥说的,根据文件路径,网络或者本地皆可,创建一个NSURLRequest,然后用webView加载就可以 ...
- Unix系统编程()信号处理器简介
信号处理器简介 信号处理器程序(也称为信号捕捉器)是当指定信号传递给进程时将会调用的一个函数.这里会学习信号处理器的基本原理,后面将继续学习. 调用信号处理器程序,可能会随时打断主程序流程:内核代表进 ...
- Javascript知识点:IIFE - 立即调用函数
Immediately-invoked Function Expression(IIFE,立即调用函数),简单的理解就是定义完成函数之后立即执行.因此有时候也会被称为“自执行的匿名函数”(self-e ...