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. JStorm环境搭建

    开始JStorm学习之前需要搭建集群环境,这里演示搭建单机JStorm环境,仅供学习使用,生产环境部署大同小异,但建议参考JStorm社区及相关说明文档. 一.前提 JStorm核心代码均用Java实 ...

  2. sso单点登录研究

    iframe跨域通信的通用解决方案http://www.alloyteam.com/2012/08/lightweight-solution-for-an-iframe-cross-domain-co ...

  3. Oracle宣布很多其它的Java 9 新特性

    随着Oracle确认了其余的4个Java 9特性,下一代Java的计划開始变得更清晰了,Oracle已经发布了第二套Java 9特性.自从Oracle在今年早些时候宣布了3个新的API和模块化源代码后 ...

  4. iOS代码技巧之判断设备及状态

    转自:http://my.oschina.net/joanfen/blog/149076 一.判断设备 01 //设备名称 02 return [UIDevice currentDevice].nam ...

  5. 【转】Appium_API(翻译+用法说明)

    转自:https://testerhome.com/topics/3711 1.contextscontexts(self): Returns the contexts within the curr ...

  6. Java多线程简析——Synchronized(同步锁)、Lock以及线程池

    Java多线程 Java中,可运行的程序都是有一个或多个进程组成.进程则是由多个线程组成的.最简单的一个进程,会包括mian线程以及GC线程. 线程的状态 线程状态由以下一张网上图片来说明: 在图中, ...

  7. MySql Trace

    MySql Trace 2015-09-25 目录 1 版本简要2 在线设置  2.1 打开命令列界面  2.2 设置参数3 查看结果 在MsSQL Server中我们要追踪SQL,只需要开启MS S ...

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

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

  9. DOM方法 getElementsByName()方法

    http://www.imooc.com/code/1583 getElementsByName()方法 返回带有指定名称的节点对象的集合. 语法: document.getElementsByNam ...

  10. 删除outlook配置信息

    1.输入“Win+R”组合键,在弹出的窗口中输入:control,打开控制面板 2.找到“邮件”选项,并单击 3.在弹出的窗口中,单击“显示配置文件”选项,删除配置文件夹,OK.