Spring定时任务在有的项目中起到很关键的作用,它允许你通过配置来指定特定时间去调用特定类的特定方法。

一. 分类
1.作业类需要继承特定的类。特定的类有:
org.springframework.scheduling.quartz.QuartzJobBean;
java.util.TimerTask.
2.作业类就是自己定义的普通类。

作业类使用的触发时间的方式主要有两种。
1.在指定的时间调用。例如每天的每小时的15分,30分,45分,00分执行任务。
org.springframework.scheduling.quartz.CronTriggerBean
2.每隔一段时间就调用。比如每过10分钟就执行一次特定的任务。
org.springframework.scheduling.quartz.SimpleTriggerBean

二. 定时任务的主要步骤:
1.导包

2.编写任务类

3.配置文件中配置

解释:a: 当容器加在该配置文件的时候,首先实例化任务调度工厂,调度工厂的triggers属性是一个list,里面存放
所有用户定义的任务。
b: 找到这个任务后,会继续找到这个任务的配置,这里是延迟0秒执行调度,每隔1秒执行该任务,该任
务的名字是task1。
c: 继而找到task1代表的真正的定义类,也就是图中配置文件中的第一个bean,其中的jobClass属性要写
执行任务类的完整路径,找到这个类之后会自动调用类中重写的那个方法,并且执行。

这种任务的触发方式是每隔一段时间触发,假如你想要在指定的特定时间触发,则需要这样配置:

仅仅是把上图中的第二个bean换成这种方式,另外需要注意的是,任务调度工厂中的任务列表

List中要加入该任务<ref bean= "cronTrigger" />。而原来被替换的simpleTrigger要注释掉。

但博文开始就说了任务分类有两种,这里只是继承特定的类这一种,还有一种就是作业类就是自己而不需要继承任何类。
这里需要解释的是,如果每次写作业类都需要硬性继承某个特定的类,就好像给代码“绑架”了一样,还要硬性去重写某个方法,
这个扩展性就太差了。所以就有了第二种,不需要你继承特定的类重写特定的方法,而是由你自由定义,之所以做到了这一点是因为这部分逻辑被抽离了出来,
写在了配置文件中。接下来就介绍这一种。

1. 编写一个非常普通的类,没有任何继承,方法也是自己随便定义的。

2.配置文件

首先我把这个类当作普通bean对象写在配置文件中。之后非常重要的一个配置是MethodInvokingJobDetailFactoryBean,它有两个属性,一个是目标任务类对象,一个
是目标任务方法。注意这个方法value写的是方法名。不要有参数。
当任务调度工厂执行任务时,根据这个配置找到要执行的对象和方法。
最后把task加入到调度工厂的list中<ref bean="task"/>即可

除此之外还有一个更加简单的配置方法:
1.任务类

2.配置

这种方式非常的简洁,只需要配置task标签即可。但特别注意的前提是spring配置文件表头一定要加上:

xmlns:task="http://www.springframework.org/schema/task"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.0.xsd"

这种方式不需要你把它配置到任务调度工厂中就可以执行。其实正如你看到的,scheduled-tasks标签
就相当于一个任务集合工厂,里面的<task:scheduled>才是一个个任务。

以上是我介绍的全部使用方式了。
任务类两种,一种是要继承和重写,一种自己定义普通类普通方法。
触发时间方式两种,一种间隔时间,一种指定特定时间。
当配置task标签来指定的时候,要注意配置文件头需添加一些关于task的声明标签。
除此之外,网上还有通过注解的方式来使用定时任务。这里就不作介绍了。

spring定时器的使用的更多相关文章

  1. spring定时器,定时器一次执行两次的问题

    Spring 定时器 方法一:注解形式 配置文件头加上如下: xmlns:task="http://www.springframework.org/schema/task" htt ...

  2. Spring 定时器Quartz的用法

    Spring定时器Quartz的用法也很简单,需要引入quartz-all-1.5.2.jar java代码如下: package com.coalmine.desktop; import java. ...

  3. spring定时器,当遇见半小时的情况时

    spring定时器遇见半小时的解决方法(这里只提供注解方式) @Scheduled(fixedRate=6000000)//每隔100分钟执行方法 fixedRate的值是毫秒

  4. Spring 定时器的使用

    spring定时器应用 相关类: org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean 配置定时远行方法 o ...

  5. spring定时器

    本人小菜鸟一枚,今天在公司看到一段spring定时器配置,自己总结一下! <!-- 定义调用对象和调用对象的方法 --><bean id="jobtask9" c ...

  6. 两种流行Spring定时器配置:Java的Timer类和OpenSymphony的Quartz

    1.Java Timer定时 首先继承java.util.TimerTask类实现run方法 import java.util.TimerTask; public class EmailReportT ...

  7. 注解式开发spring定时器

    1:spring 配置文件中增加这句    <task:annotation-driven/>  2:确保扫描程序能够扫描后  下面第3步骤的java类    <context:co ...

  8. spring定时器设置(转自:http://my.oschina.net/LvSantorini/blog/520049)

    转自:http://my.oschina.net/LvSantorini/blog/520049<!-- MessageRequestTask类中包含了msgRequest方法,用于执行定时任务 ...

  9. spring定时器,5步完成

    spring定时器,5步完成,我们开发的时候会用定时执行任务. 用spring框架时,可以直接使用spring定时功能 1.创建任务调度类,里面一个方法,方法名为work 2. spring配置文件, ...

  10. spring定时器用Annotation兑现

    spring定时器用Annotation实现 0人收藏此文章, 我要收藏发表于3个月前 , 已有46次阅读 共0个评论 1.ApplicationContext.xml配置 a).需要在xmlns里面 ...

随机推荐

  1. 时间处理之strtotime

    strtotime (PHP 4, PHP 5, PHP 7)strtotime - 将任何英文文本的日期时间描述解析为 Unix 时间戳说明 int strtotime ( string $time ...

  2. 计算机程序的思维逻辑 (66) - 理解synchronized

    上节我们提到了多线程共享内存的两个问题,一个是竞态条件,另一个是内存可见性,我们提到,解决这两个问题的一个方案是使用synchronized关键字,本节就来讨论这个关键字. 用法 synchroniz ...

  3. 微信小程序 网络请求之设置合法域名

    设置域名 登录微信公众号后台小程序中 设置→开发设置→服务器设置 必须设置域名,微信小程序才能进行网络通讯,不然会报错 如果设置好了合法域名,开发工具还提示不在合法域名列表中,因为在微信会有一段时间的 ...

  4. 基于Quartz.NET框架的WinForm任务计划管理工具

    最近接到一个小需求 ——可以定期同步20个Sql Server 7.0数据库里的数据(数据量会预计>10000),并保存为cvs格式文件 ——可以设置保存文件数据量 ——该应用需要用WinFor ...

  5. 2017-2-23 C#基础 for循环

    循环语句主要有:for;while;foreach.最常用的是for循环.for循环的四要素:初始条件:循环条件:循环体:状态改变.for循环的顺序是:初始条件--循环条件--循环体--状态改变.br ...

  6. 从零开始--Spring项目整合(2)整合SpringMVC

    1.pom.xml 定义版本 <properties> <spring.version>4.2.7.RELEASE</spring.version> <jac ...

  7. Jsp——http status 404 问题

    今天学习Jspapplication内置对象的时候突然碰到了一个问题——http status 404 发生了什么? 提示The requested resource is not available ...

  8. 文件的上传(表单上传和ajax文件异步上传)

    项目中用户上传总是少不了的,下面就主要的列举一下表单上传和ajax上传!注意: context.Request.Files不适合对大文件进行操作,下面列举的主要对于小文件上传的处理! 资源下载: 一. ...

  9. 【openstack N版】——块存储服务cinder

    一.块存储服务介绍 1.1块存储服务通常包含以下组件 cinder-api: 接受API请求,并将其路由到"cinder-volume"执行. cinder-volume: 与块存 ...

  10. 一个想法照进现实-《IT连》创业项目:万事开头难

    前言: 之前是一个想法,现在已经进入创业阶段,所以这个系列的标题,改了. 众筹的事在今天也停止了. 7-9号会在深圳龙岗布吉参加一个风投对接的活动,今晚(6号)会出发. 因为:在深圳会呆几天,而且这个 ...