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秒输出一下当前的时间了,如下输出样例:
- spring+quartz
- spring quartz
- Spring + Quartz
- spring quartz
- Spring Quartz
- Quartz+Spring
- spring quartz
- spring Quartz
- Spring Quartz
- Spring quartz
- spring quartz
- Quartz spring
- Spring Quartz
- spring+quartz
- Quartz spring
- spring quartz
- Quartz+spring
- spring-quartz
- Cocos2d-x之getVisibleSize,getContentSize,boundingBox,getContentSizeInPixels,convertToGL,convertToUI
- jquer中$.post方法
- linux下查看所有用户及所有用户组
- Windows下jira安装、破解及汉化
- oracle 树结构查询
- spring quartz
- 在aix 上安装apache2.0.46
- 内核中与驱动相关的内存操作之十一(IO内存)
- swing仿qq写的群聊软件
- Makefile笔记(一)
- HttpClient 学习整理
- JEECG整合finereport快速搭建与开发
- 设计模式(四)之单例模式
- shell字符串的截取