在实际项目中,通常须要用到定时任务(定时作业)。spring框架提供了非常好的实现。

1、  下载spring-quartz插件包

这里默认当前系统中是集成了spring框架的基本功能的。去网上下载spring定时器的jar包,这里用的是quartz-all-1.8.4.jar,下载完毕之后加入的项目的classPath中去。

2、编写定时任务运行模块的代码

spring使得定时任务编码十分方便。在编写运行模块时。不须要与不论什么spring框架的东西耦合,不须要继承或者实现某个类或接口,仅仅须要编写常规的类和方法。

通常将须要运行的业务逻辑编写成为一个方法,供定时器调用。

3、配置定时任务

配置文件放在和spring普通配置文件同一路径就可以。配置的逻辑是这种:

a首先初始化调度任务的类。这个配置与其它的常规配置一样,即使用spring的IOC机制,将定时任务看成一个普通的bean。

b然后配置任务运行task,由MethodInvokingJobDetailFactoryBean实现。

该配置告诉容器,由哪个类以及哪个方法运行将详细的定时任务。一个定时任务相应一个方法。也相应一个task配置。

这里须要配置两个參数,运行类的实例targetObject和运行方法targetMethod。

运行类的实例即为前面的配置。运行的方法是类中详细的运行任务的方法。

c接着。配置定时调度触发器,一般由CronTriggerBean实现,这个配置告诉spring何时运行某一个任务。这个配置须要两个參数:运行的任务jobDetail和触发时机表达式cronExpression。第一个參数的值即为前面的task,第二个是一个表达式,表示何时运行该任务。如0 0 0 1 * ?表示每月1好的0点0分触发该任务。详细的配置參照后面的描写叙述。

d配置中心调度器。由SchedulerFactoryBean实现,它告诉spring须要启动那些触发器。

这里仅仅有一个參数triggers,它接受一个触发器列表,有多少触发器就有多少定时任务。

到这里。配置完毕。

4、启动项目,測试。

5、实例:

a任务类

public class MonthlyJob {
private A a;
/**
* 详细任务
*/
public void initWjxx() {
.......
}
public void setA(
A a) {
this.a = a;
}
}

b配置文件

<?

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"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<!-- 运行job的类 -->
<bean id="monthlyJob" class="com.pmi.quartz.MonthlyJob">
<!-- 注入属性值 -->
<property name="a" ref="a"/>
</bean>
<!-- 初始化调度任务 -问卷信息-->
<bean id="simMonthlyJobTask"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<!-- 调用的类 -->
<property name="targetObject">
<ref bean="monthlyJob" />
</property>
<!-- 调用类中的方法 -->
<property name="targetMethod">
<value>initWjxx</value>
</property>
</bean>
<!-- 触发器-问卷信息 -->
<bean id="cronTriggerTest" class="org.springframework.scheduling.quartz.CronTriggerBean">
<!-- 指向我们的任务 -->
<property name="jobDetail" ref="simMonthlyJobTask" />
<!-- 每月1号的00:00触发 -->
<property name="cronExpression" value="0 0 0 1 * ?" />
</bean>
<!-- 总调度器 -->
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<!-- 触发器列表 -->
<ref bean="cronTriggerTest" />
</list>
</property>
</bean>
</beans>

spring-quartz定时任务使用小结的更多相关文章

  1. Spring quartz定时任务service注入问题

    今天想单元测试一下spring中的quartz定时任务,job类的大致结构和下面的SpringQtz1类相似,我的是实现的org.quartz.Job接口,到最后总是发现job类里注入的service ...

  2. [Spring] - Quartz定时任务 - Annotation

    Spring + Quartz可以使用annoation方式: 1.AppJob类: package com.my.quartz.testquartz1; import org.springframe ...

  3. Spring Quartz定时任务设置

    这里主要记录一下定时任务的配置,偏向于记录型的一个教程,这里不阐述Quartz的原理. 首先,在Spring配置文件里配置一个自己写好的一个包含执行任务方法的一个类. <bean id=&quo ...

  4. spring quartz定时任务

    配置quartz 在spring中需要三个jar包: quartz-1.8.5.jar.commons-collections-3.2.1.jar.commons-logging-1.1.jar 首先 ...

  5. 一看便知spring+quartz定时任务

    这是我经过网上收集然后加上自己的测试写的,以便大家使用 标配:已测 注意需要的包:(在已经配置spring 的情况下) quartz-all-1.6.jar        spring-context ...

  6. Spring+Quartz(定时任务)

    此处用到的Quartz版本是quartz-2.2.3 官方网站:http://www.opensymphony.com/quartz 首先先介绍用到的几个关键类:scheduler任务调度.Job任务 ...

  7. spring + Quartz定时任务配置

    <bean id="exportBatchFileTask" class="com.ydcn.pts.task.ExportBatchFileTask"& ...

  8. spring + quartz定时任务,以及修改定时任务

    spring4+quartz2.2.3,定时任务弄好了,修改定时任务没折腾起,没找到合适的解决方案. 最终使用库spring-context-support 3.2.17.RELEASE +  qua ...

  9. Java Spring Quartz 定时任务

    公司需要使用JAVA的WebServer完成简单的定时跑任务的工作.其他例如:每隔30分钟执行锁定用户解锁任务. Quartz 在开源任务调度框架中的翘首,它提供了强大任务调度机制,难能可贵的是它同时 ...

  10. [Spring] Java spring quartz 定时任务

    首先,需要导入quartz 的jar包 ① applicationContext.xml <!-- 轮询任务 --> <import resource="classpath ...

随机推荐

  1. MariaDB数据库(三)

    1. 基本查询 查询基本使用包括:条件.排序.聚合函数.分组和分页. 实例详解查询 1> 创建students表用作实验 MariaDB [testdb]> drop table stud ...

  2. (原)剑指offer之栈和队列

    题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 设两个栈为stack1,stack2: 1:首先想到最简单的方法:是入栈时将数据压入stack1,出栈时 ...

  3. python基础——14(shelve/shutil/random/logging模块/标准流)

    一.标准流 1.1.标准输入流 res = sys.stdin.read(3) 可以设置读取的字节数 print(res) res = sys.stdin.readline() print(res) ...

  4. IDEA避免JAVA文件自动引入import.*包

    Intellij Idea工具在java文件中怎么避免import java.utils.*这样的导入方式,不推崇导入*这样的做法!Editor->Code Style->Java-> ...

  5. 阿里云PolarDB及其共享存储PolarFS技术实现分析(下)

    上篇介绍了PolarDB数据库及其后端共享存储PolarFS系统的基本架构和组成模块,是最基础的部分.本篇重点分析PolarFS的数据IO流程,元数据更新流程,以及PolarDB数据库节点如何适配Po ...

  6. poj2431 Expedition优先队列

    Description A group of cows grabbed a truck and ventured on an expedition deep into the jungle. Bein ...

  7. 九度oj 题目1208:10进制 VS 2进制

    题目描述: 对于一个十进制数A,将A转换为二进制数,然后按位逆序排列,再转换为十进制数B,我们乘B为A的二进制逆序数.    例如对于十进制数173,它的二进制形式为10101101,逆序排列得到10 ...

  8. web.xml不同的头文件

    <转自:http://blog.csdn.net/qq_16313365/article/details/53783288> 1. Servlet 3.1 Java EE 7 XML sc ...

  9. 【Luogu】P1578奶牛浴场(DP,枚举)

    题目链接 枚举极大子矩形.详情请见本题题解:I_AM_HelloWord 代码如下 #include<cstdio> #include<cctype> #include< ...

  10. 刷题总结——bzoj1725(状压dp)

    题目: 题目描述 Farmer John 新买了一块长方形的牧场,这块牧场被划分成 N 行 M 列(1<=M<=12; 1<=N<=12),每一格都是一块正方形的土地. FJ  ...