Spring + Quartz 做简单的任务调度

Spring Quartz 定时任务
本文介绍如何使用Spring 3.0与Quartz实现简单的定时任务调度。通过Maven搭建项目,并配置依赖,实现了每5秒执行一次的任务调度示例。

原文地址:

http://outofmemory.cn/code-snippet/4519/Spring-quartz-example


刚刚已经验证是可以用的,接下来想使用spring注解的方式!


本文的示例代码简单的演示如何使用Spring 3.0 + Quartz实现简单的任务调度。

首先需要新建一个maven项目,然后在pom中添加如下依赖项:

<!-- Spring 3 dependencies -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>3.1.2.RELEASE</version>
    </dependency>

    <!-- QuartzJobBean in spring-context-support.jar -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context-support</artifactId>
        <version>3.1.2.RELEASE</version>
    </dependency>

    <!-- Spring + Quartz 事务支持 -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-tx</artifactId>
        <version>3.1.2.RELEASE</version>
    </dependency>

    <!-- Quartz 框架 -->
    <dependency>
        <groupId>org.quartz-scheduler</groupId>
        <artifactId>quartz</artifactId>
        <version>1.8.6</version>
    </dependency>
然后新建一个调度任务要做事情的类,我们命名为“ExampleQuartzTask”,这个类每次都打印一下当前的时间

package cn.outofmemory.hello.quartz;

import java.text.SimpleDateFormat;
import java.util.Date;

public class ExampleQuartzTask {

    public void doTask() {
        SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss");
        Date now = new Date();
        String strNow = format.format(now);
        String msg = String.format("do Quartz Task at %s", strNow);
        System.out.println(msg);
    }

}

使用spring和Quartz框架我们只需要实现这个类就可以实现任务的定时调度执行了,剩下的工作就是配置一下spring的配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

    <!-- 我们实现的调度任务执行操作类 -->
    <bean id="exampleQuartzTask" class="cn.outofmemory.hello.quartz.ExampleQuartzTask"/>

    <!-- 封装要执行操作的类 -->
    <bean id="exampleQuartzTaskFactoryBean"
        class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
        <property name="targetObject" ref="exampleQuartzTask" />
        <property name="targetMethod" value="doTask" />
    </bean>

    <!-- 简单触发器,每隔5秒执行一次任务 -->
    <bean id="simpleTrigger" 
                class="org.springframework.scheduling.quartz.SimpleTriggerBean">

        <property name="jobDetail" ref="exampleQuartzTaskFactoryBean" />
        <property name="repeatInterval" value="5000" />
        <property name="startDelay" value="1000" />

    </bean>

    <!-- crontab trigger -->
    <bean id="cronTrigger"
        class="org.springframework.scheduling.quartz.CronTriggerBean">

        <property name="jobDetail" ref="exampleQuartzTaskFactoryBean" />
        <!-- 每5秒执行一次 -->
        <property name="cronExpression" value="0/5 * * * * ?" />

    </bean>

    <!-- 配置任务和触发器 -->
    <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
        <property name="jobDetails">
            <list>
                <ref bean="exampleQuartzTaskFactoryBean" />
            </list>
        </property>

        <property name="triggers">
            <list>
                <ref bean="simpleTrigger" />
            </list>
        </property>
    </bean>
</beans>

通过上面的配置,我们就可以实现调度任务了,打开App.java类,添加如下代码:

package cn.outofmemory.hello.quartz;

import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * Hello world!
 *
 */
public class App 
{
    public static void main( String[] args )
    {
        System.out.println( "Hello World!" );

        new ClassPathXmlApplicationContext("/springContext.xml");

    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值