spring quartz

来源:互联网 发布:java正则表达式pattern 编辑:程序博客网 时间:2024/05/29 09:45

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

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

  <!-- 依赖版本控制 -->
<properties>
<spring.version>3.0.5.RELEASE</spring.version>
<quartz.version>1.8.6</quartz.version>
<log4j.version>1.2.13</log4j.version>
<slf4j.version>1.5.11</slf4j.version>
</properties>
<dependencies>
<!-- Spring 3 dependencies -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- QuartzJobBean in spring-context-support.jar -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${spring.version}</version>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- Spring + Quartz 事务支持 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- Quartz 框架 -->
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>${quartz.version}</version>
</dependency>
<!-- log -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${slf4j.version}</version>
</dependency>
</dependencies>

然后新建一个调度任务要做事情的类,我们命名为“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" xmlns:p="http://www.springframework.org/schema/p"xmlns:context="http://www.springframework.org/schema/context"xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx"xmlns:aop="http://www.springframework.org/schema/aop"xsi:schemaLocation="http://www.springframework.org/schema/beans               http://www.springframework.org/schema/beans/spring-beans-3.0.xsd               http://www.springframework.org/schema/context               http://www.springframework.org/schema/context/spring-context-3.0.xsd            http://www.springframework.org/schema/jee           http://www.springframework.org/schema/jee/spring-jee-3.0.xsd           http://www.springframework.org/schema/tx              http://www.springframework.org/schema/tx/spring-tx-3.0.xsd               http://www.springframework.org/schema/aop               http://www.springframework.org/schema/aop/spring-aop-3.0.xsd               ">    <!-- 我们实现的调度任务执行操作类 -->
<context:component-scan base-package="cn.outofmemory.hello.quartz" />    <!-- 声明使用注解式事务 --><tx:annotation-driven transaction-manager="transactionManager" /><!-- 我们实现的调度任务执行操作类 --><!-- 用注解就不需要这里定义类 --><!-- <bean id="dataoutput" class="com.test.OutputDate"></bean> --><!-- 封装要执行操作的类 -->
    <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");    }}

然后执行程序,就会每隔5秒输出一下当前的时间了,如下输出样例:



0 0
原创粉丝点击