Spring MVC(四)—— quartz实现定时任务

一、简介

Quartz是一个完全由java编写的开源作业调度框架,Quartz作为Java实现的工业标准级别的定时任务调度器,Spring对其提供了无缝的集成,并大大简化了开发工作。

一个任务调度器最基本的三个元素是

  • Job(or Task):需要定时处理的事情
  • Trigger: 事件触发时间点(一次性的、固定周期性的、像Linux Cron Jobs 灵活配置的)
  • Scheduler: 调度器

  Job与Trigger是一对一的关系,Scheduler与Trigger是一对多的关系。

  Quartz的Job对应类为JobDetail,Spring为简化开发提供了工厂包装类MethodInvokingJobDetailFactoryBean类,或使用JobDetailFactoryBean;

  Quartz提供两种Trigger,一是SimpleTrigger提供周期性定时触发器,Spring的对工厂类为SimpleTriggerFactoryBean(注:SimpleTriggerBean不支持Quartz2以上版本,已经被SimpleTriggerFactoryBean替代)二是CronTrigger提供像Linux Cron Jobs那样的复杂触发器,触发时间点使用Cron表达式定义,Cron表达式语法可以参考Quartz官方文档,Spring的对应工厂类为CronTriggerFactoryBean(注:CronTriggerBean不支持Quartz2以上版本,已经被CronTriggerFactoryBean替代)

  Quartz的Scheduler对应类为Scheduler,Spring对应工厂类为SchedulerFactoryBean

二、Spring MVC中的实现

1、依赖的jar包

  Quartz使用的类主要在spring-context-support-4.1.6-RELEASE.jar、quartz-2.1.1.jar中,其他环境所需的jar包参考Spring MVC(一)—— 最小环境搭建中的说明。

2、Quartz使用配置applicationContext-task.xml如下:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 3     xmlns:aop="http://www.springframework.org/schema/aop"
 4     xsi:schemaLocation="http://www.springframework.org/schema/beans
 5         http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context
 6         http://www.springframework.org/schema/context/spring-context.xsd
 7         http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">
 8
 9     <!--- 触发器的bean的设置,在这里我们设置了我们要触发的jobDetail是哪个 -->
10     <bean id="testTimerTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
11         <property name="jobDetail">
12             <bean id="testTimerJob" class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
13                 <property name="jobClass" value="com.ruijie.crazy.timer.TestTimer" />
14                 <property name="group" value="TEST" />
15                 <property name="durability" value="true" />
16             </bean>
17         </property>
18         <property name="cronExpression">
19             <value>0 54 9 * * ?</value>   <!-- 每天9点54分触发一次 -->
20         </property>
21     </bean>
22
23      <!-- 管理触发器的总设置,管理我们的触发器列表,可以在bean的list中放置多个触发器    -->
24     <bean autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
25         <property name="triggers">
26             <list>
27                 <ref bean="testTimerTrigger" />
28             </list>
29         </property>
30         <property name="quartzProperties">
31             <props>
32                 <prop key="org.quartz.scheduler.skipUpdateCheck">true</prop>
33             </props>
34         </property>
35     </bean>
36
37 </beans>

3、定时任务类的java实现:

 1 package com.ruijie.crazy.timer;
 2
 3 import org.quartz.JobExecutionContext;
 4 import org.quartz.JobExecutionException;
 5 import org.springframework.scheduling.quartz.QuartzJobBean;
 6
 7 public class TestTimer extends QuartzJobBean {
 8
 9     @Override
10     protected void executeInternal(JobExecutionContext arg0) throws JobExecutionException {
11         System.out.println("TestTimer----");        // 实现定时任务的代码
12     }
13
14 }

  至此,Spring MVC与Quartz集成的事情就全部搞定了。

时间: 2024-09-28 00:12:25

Spring MVC(四)—— quartz实现定时任务的相关文章

Spring Boot集成quartz实现定时任务并支持切换任务数据源

org.quartz实现定时任务并自定义切换任务数据源 在工作中经常会需要使用到定时任务处理各种周期性的任务,org.quartz是处理此类定时任务的一个优秀框架.随着项目一点点推进,此时我们并不满足于任务仅仅是定时执行,我们还想要对任务进行更多的控制,随时能对任务进行人为干预,就需要对quartz有更深入的了解.而随着微服务的流行,项目中多数据源的情况也越来越常见,在定时任务中集成多数据源切换的功能也需要集成进来. 集成quartz实现定时任务 集成quartz实现定时任务 quartz中实现

第二十四天 框架之痛-Spring MVC(四)

6月3日,晴."绿树浓阴夏日长. 楼台倒影入池塘. 水晶帘动微风起, 满架蔷薇一院香". 以用户注冊过程为例.我们可能会选择继承AbstractController来实现表单的显示. 1.导入spring-framework-2.5.6的jar包,详见第八天 框架之痛-Spring MVC(一). 2.编写web.xml 的配置文件.主要增加spring Web MVC框架提供的 org.springframework.web.filter.CharacterEncodingFilte

玩转spring mvc(四)---在spring MVC中整合JPA

关于在Spring MVC中整合JPA是在我的上一篇关于spring mvc基本配置基础上进行的,所以大家先参考一下我的上一篇文章:http://blog.csdn.net/u012116457/article/details/43528111 接下来是需要新添加的一些文件: jdbc.properties: jdbc.driverClassName=com.mysql.jdbc.Driver jdbc.url=jdbc\:mysql\://localhost\:3306/tmos?useUni

ssh中使用spring的集成quartz 开发定时任务

之前没有使用框架开发时对于开发定时任务都是 使用java的原声timer类,重写线程的run方法跑要执行的任务.刚刚换的新公司,项目使用ssh2,目前该项目中的定时任务的使用spirng集成的quartz工具,非常方便.好了,废话不多说,说一下开发过程. 首先,需要建一个资源配置xml文件,一般以quartz结尾.如我项目中的该文件名为:applicationContext-bms-sendxml-quartz.xml,别忘了在applicationContext.xml文件中导入该文件.app

Spring MVC使用Schedule实现定时任务

Schedule存在spring-context.jar包中. 实现简单步骤: 1.配置bean.xml开启定时任务支持. <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instanc

Spring中使用quartz执行定时任务的两种方式

一, 继承spring封装Quartz类(org.springframework.scheduling.quartz.QuartzJobBean)方式 spring-mvc-quartz2.xml: <bean id="job2Trigger" class="org.springframework.scheduling.quartz.CronTriggerBean"> <property name="jobDetail">

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

相关文章 Spring Boot 相关文章目录 前言 最近在项目中使用到定时任务,之前一直都是使用Quartz 来实现,最近看Spring 基础发现其实Spring 提供 Spring Schedule 可以帮助我们实现简单的定时任务功能.下面说一下两种方式在Spring Boot 项目中的使用. Spring Schedule 实现定时任务 Spring Schedule 实现定时任务有两种方式 1. 使用XML配置定时任务, 2. 使用 @Scheduled 注解. 因为是Spring Bo

Spring 3整合Quartz 2实现手动设置定时任务:新增,修改,删除,暂停和恢复----每一个你不满意的当下,都有一个你不曾努力的过去

摘要:在项目的管理功能中,对定时任务的管理有时会很常见.但一般定时任务配置都在xml中完成,包括cronExpression表达式,十分的方便.但是如果我的任务信息是保存在数据库的,想要动态的初始化,还有就是任务较多的时候不是得有一大堆的xml配置?或者说我要修改一下trigger的表达式,使原来5秒运行一次的任务变成10秒运行一次,或者说我要控制定时任务的 “ 暂停 ” 呢?暂停之后又要在某个时间点 “ 重启 ” 该定时任务呢?或者说直接 “ 删除 ” 该定时任务呢?要 改变某定时任务的触发时

spring boot 整合 quartz 集群环境 实现 动态定时任务配置【原】

最近做了一个spring boot 整合 quartz  实现 动态定时任务配置,在集群环境下运行的 任务.能够对定时任务,动态的进行增删改查,界面效果图如下: 1. 在项目中引入jar 2. 将需要的表导入数据库 官网上有不同数据库的脚本,找到对应的,导入即可 3. java 代码 将quartz 的相关配置文件,配置为暴露bean,方便后期引用. 有一处关键的地方,就是注入spring 上下文,也可以算是一个坑.如果,不注入spring 上下文,那么新添加的定时任务job,是新new 的一个