Spring2.5.4整合quartz1.6.0定时框架

转载 2015年10月09日 12:19:34

文章来源:http://lavasoft.blog.51cto.com/62575/104357


环境:
Spring 2.5.4
Quartz 1.6.0
 
Quartz是一个企业级的定时任务执行工具,使用起来也相当容易。但是也有点约束----每个作业必须实现Job接口。
 
Spring早在1.0就对Quartz提供了支持。Spring AOP的强大功能可以将这个无聊的事情见鬼去吧。我们甚至可以将任何一个普通类的方法设定为定时执行的方法。并且在Spring初始化的自动启动定时器(不需要你去写Main方法),在Spring关闭的时候结束定时器的运行,一避免应用服务器都关闭了,定时器还在后台默默无闻“空转”。呵呵,下面就看个例子吧:
 
目标:将一个普通的业务方法作为定时作业的方法通过Spring配置去执行。
 
代码:
 
第一步:写业务方法
 
package stu.quartz; 

/** 
* 业务方法 

* @author leizhimin,2008-10-8 15:41:52 
*/
 
public class TestService { 
        public void doSomething() { 
                System.out.println("Do Something Freely!"); 
        } 

        public void justDoIt() { 
                System.out.println("Just Do It!"); 
        } 

 
二、配置Spring
 
<?xml version="1.0" encoding="UTF-8"?> 
<beans default-autowire="byName" xmlns="http://www.springframework.org/schema/beans" 
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
             xsi:schemaLocation="http://www.springframework.org/schema/beans [url]http://www.springframework.org/schema/beans/spring-beans.xsd[/url]"> 

        <!-- 普通的业务Bean --> 
        <bean name="testService" class="stu.quartz.TestService"/> 

        <!-- 作业 --> 
        <bean id="jobDetail_test" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> 
                <property name="targetObject" ref="testService"/> 
                <property name="targetMethod" value="justDoIt"/> 

        </bean> 

        <!-- 触发器 --> 
        <bean name="testTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean"> 
                <property name="jobDetail" ref="jobDetail_test"/> 
                <property name="startDelay" value="10"/> 
                <property name="repeatInterval" value="2000"/> 
                <property name="repeatCount" value="100"/> 
                <property name="jobDataAsMap"> 
                        <map> 
                                <entry key="count" value="10"/> 
                        </map> 
                </property> 
        </bean> 

        <!-- 计划 --> 
        <bean name="testScheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> 
                <property name="triggers"> 
                        <list> 
                                <ref bean="testTrigger"/> 
                        </list> 
                </property> 
                <property name="schedulerContextAsMap"> 
                        <map> 
                                <entry key="timeout" value="30"/> 
                        </map> 
                </property> 

                <!-- Quartz的高级配置--> 
                <!--<property name="configLocation" value="classpath:com/lavasoft/quartz.properties"/>--> 
        </bean> 

</beans>
 
三、写测试
 
package stu.quartz; 

import org.springframework.context.ApplicationContext; 
import org.springframework.context.support.ClassPathXmlApplicationContext; 

/** 
* 测试类 

* @author leizhimin,2008-10-8 16:33:21 
*/
 
public class TestQuartz { 
        public static void main(String[] args) { 
                ApplicationContext context = new ClassPathXmlApplicationContext("/Application_quartz.xml"); 
                System.out.println("Main方法执行开始了! 定时器伴随着Spring的初始化执行了。。。"); 

                System.out.println("Main方法执行结束了!"); 
        } 
}
 
运行测试:
Main方法执行开始了! 定时器伴随着Spring的初始化执行了。。。 
Main方法执行结束了! 
Just Do It! 
Just Do It! 
Just Do It! 
Just Do It! 
Just Do It! 
......
 
运行结果表名:在Spring初始化后,定时器根据延迟时间启动执行,并且在执行过过程中,Main线程一直没有退出。定时器线程一直在执行。
 
在强行终止Main线程的时候,定时器也停止执行。

Spring整合Quartz,并持久化Job到MySQL

1、创建项目 2、创建quartz数据库,并导入Quartz的SQL脚本 mysql> use quartz Database changed mysql> show table...
  • gp490609578
  • gp490609578
  • 2015年09月29日 17:56
  • 4610

Spring下quartz调度持久化实战

终于有时间写博客了,这次详细记录下Spring 3.X中quartz框架如何持久化调度任务相关知识点,按照目录编排。 1.介绍 1.1quartz概述 Quartz包含三个抽象概念,调度器(谁管理),...
  • weiweiai123456
  • weiweiai123456
  • 2015年09月09日 15:16
  • 5143

Spring2.5与Quartz的整合

Spring2.5与Quartz的整合applicationContext_quartz.xml的配置
  • IsResultXaL
  • IsResultXaL
  • 2015年10月29日 11:28
  • 883

Spring2.5+Quartz定时任务简单例子web工程

  • 2014年07月28日 13:18
  • 4.1MB
  • 下载

Spring中配置Quartz的过程;Spring与Quartz的兼容问题

1. 根据spring和Quratz的版本不同,触发器的方法可能不同,有org.springframework.scheduling.quartz.SimpleTriggerFactoryBean和 ...
  • u014313894
  • u014313894
  • 2016年10月22日 20:23
  • 1244

Spring 定时器配置 基于配置文件 (使用 Spring3.2 、 quartz-1.6.5)

Spring 配置文件  quartz-1.6.5.jar
  • chenyongtu110
  • chenyongtu110
  • 2016年07月09日 13:36
  • 1269

spring3+quartz1.6.4 集群示例

  • 2016年09月20日 16:49
  • 5.07MB
  • 下载

quartz储存方式之JDBC JobStoreTX

这篇单单记录一下个人配置使用quartz的JDBC JobStoreTX的过程以及其中遇到的问题,这里的quartz是version2.2.1,数据库使用的mysql。 JDBCJobStore储存是...
  • Uhzgnaw
  • Uhzgnaw
  • 2015年06月04日 11:27
  • 20284

quartz 之数据库存储方式 全解

这段时间公司项目需要,需要用quartz做一个调度任务的项目。于是在网上找了些资料,自己也总结一下,以便日后自己的工作和学习。 首先 quartz的方式有三种,这里说的是将调度的任务存储 到...
  • m0_37872161
  • m0_37872161
  • 2017年09月01日 15:45
  • 239

ssm框架整合quartz实现定时任务

ssm框架搭建在此不做说明 新增一个applicationContext-quartz.xml配置文件,代码如下 ...
  • chen_pt
  • chen_pt
  • 2017年04月19日 16:08
  • 1744
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Spring2.5.4整合quartz1.6.0定时框架
举报原因:
原因补充:

(最多只允许输入30个字)