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整合的入门使用教程的更多相关文章

  1. spring与quartz整合实现分布式动态创建,删除,改变执行时间定时任务(mysql数据库)

    背景:因为在项目中用到了定时任务,当时想到了spring的quartz,写完发现费了很大功夫,光是整合就花了一上午,其中最大的问题就是版本问题,项目中用的是spring3.2.8的版本,查阅发现,3. ...

  2. spring与quartz整合

    这周学习了quartz定时任务,现在进行总结一下.首先要认识定时任务中几个关键接口,以及各个接口之间是如何联系起来的. 1.关键接口  (1)Scheduler,任务调度的API,它可以用来启动或者终 ...

  3. 初识spring与quartz整合实现定时任务

    参考资料: http://kevin19900306.iteye.com/blog/1397744 引用自别人的博客: 特别注意一点,与Spring3.1以下版本整合必须使用Quartz1,最初我拿2 ...

  4. Spring和Quartz整合实现定时任务调度

    在Spring中可以很方便的使用Quartz来实现定时任务等功能,Quartz主要就是Schedule(任务调度器),Job(作业任务)和Trigger(触发器)三者的关系. 实现方式有多种,在此就介 ...

  5. JDK、Spring、Quartz等几种不同定时器的用法,以及cronExpression表达式定义

    referenc:https://blog.csdn.net/clementad/article/details/42042111 下面介绍几种常用的定时器及其实现方法: 第一种:Timer和Time ...

  6. Spring入门详细教程(四)

    前言 本篇紧接着spring入门详细教程(三),建议阅读本篇前,先阅读第一篇,第二篇以及第三篇.链接如下: Spring入门详细教程(一) https://www.cnblogs.com/jichi/ ...

  7. Spring入门详细教程(二)

    前言 本篇紧接着spring入门详细教程(一),建议阅读本篇前,先阅读第一篇.链接如下: Spring入门详细教程(一) https://www.cnblogs.com/jichi/p/1016553 ...

  8. spring入门详细教程(五)

    前言 本篇紧接着spring入门详细教程(三),建议阅读本篇前,先阅读第一篇,第二篇以及第三篇.链接如下: Spring入门详细教程(一) https://www.cnblogs.com/jichi/ ...

  9. Spring入门详细教程(三)

    前言 本篇紧接着spring入门详细教程(二),建议阅读本篇前,先阅读第一篇和第二篇.链接如下: Spring入门详细教程(一) https://www.cnblogs.com/jichi/p/101 ...

随机推荐

  1. 删除mysql数据库表里的记录

    如果记录不再需要,可以用delete 命令进行删除,语法如下: DELETE FROM tablename [WHERE CONDITION] 例如,在emp 中将ename 为‘dony’的记录全部 ...

  2. docker 下 alpine 镜像设置时区的有效办法

    在使用Docker的时候,由于很多基础linux镜像都比较大,alpine这个仅仅几兆的linux基础镜像受到了很多人喜欢,笔者也不例外,可是由于alpine中的一些配置及命令与常见的centos等系 ...

  3. Atitit. Attilax企业框架 AEF的发展里程总结

    Atitit. Attilax企业框架 AEF的发展里程总结 1. Attilax企业框架and框架发展思想 1 2. AEF框架 2 2.1. 多语言支持,涉及的语言 java ,c# php py ...

  4. [svc]执行sudo时报错:effective uid is not 0

    http://jingyan.baidu.com/article/c45ad29cd83d4b051753e232.html 今天将 / 授权给了一个普通用户 导致一些问题. 启事: 操作前一定要先在 ...

  5. 【Android】16.1 Android Service基本概念

    分类:C#.Android.VS2015: 创建日期:2016-03-01 一.简介 为了解决在后台运行任务的问题,Android引入了一个称为Service的应用程序组件.Service的职责是专门 ...

  6. HttpURLConnection上传文件

    HttpURLConnection上传文件 import java.io.BufferedReader; import java.io.DataInputStream; import java.io. ...

  7. Nginx的Rewrite正则表达式,匹配非某单词

    Nginx的Rewrite正则表达式,匹配非某单词 由于要rewrite一个地址从 /mag/xx/xxx/ -> /m/xxx 但原先 /mag/xx/more/ 要保留 这就得写一个比较奇特 ...

  8. 0070 过滤器调用Spring的bean操作数据库

    假设有这样的需求:将用户每次请求的ip.时间.请求.user-agent存入数据库,很明显可以用过滤器实现,在过滤器中获取到这些数据调用mybatis的mapper存入数据库,但问题来了:mybati ...

  9. CentOS6.4下Docker应用环境的部署配置

    http://blog.chinaunix.net/uid-619485-id-4973941.html *********************************************** ...

  10. 16位结构的CPU,8086给出物理地址的方法

    .16位结构的CPU 概括地讲,16位结构(16位机,字长为16位等常见说法,与16位结构的含义相同)描述了一个CPU具有下面几方面结构特性: 1.运算器一次最多可以处理16位的数据结构 2.寄存器的 ...