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

Java开发:http://www.ujiuye.com/zt/java/

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

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. linux定时器多次,Spring 定时器执行两次

    Spring错误笔记 Spring定时器执行两次因为导入了两次 关于配置文件如下 对应的类有个定时执行检查的动作,但是动作中的日志每次输出两遍,一开始以为是log4j的输出导致的两条,找了半天没办法还 ...

  2. Spring定时器的使用-多实例下定时重建索引

    2019独角兽企业重金招聘Python工程师标准>>> 前几天接到项目需要定时重建索引的任务,一开始试了试Java自带的Timer,不知道是不是自己对Timer的了解还不够的原因,感 ...

  3. Spring 定时器

    本文向您介绍Spring定时器的两种实现方式,包括Java Timer定时和Quartz定时器,两种Spring定时器的实现方式各有优点,可结合具体项目考虑是否采用. 有两种流行Spring定时器配置 ...

  4. spring定时器分析

    spring定时器如何使用? 步骤1. 定义job bean 1.TaskScheduler构造 2.初始化相关服务 <bean id="xxxxScheduler" cla ...

  5. spring定时器(@Scheduled)

    spring定时器需要额外添加下面配置 一.配置文件 xmlns 额外添加下面的内容: xmlns:task="http://www.springframework.org/schema/t ...

  6. Java怎么使用spring定时器_浅析spring定时器的使用

    原生的Java定时器 使用Java.util包下的定时器也很简单,具体代码如下: //设置定时器开始时间 Date time = sdf.parse("2020-10-01 16:40:00 ...

  7. spring 定时器注释_带注释的控制器– Spring Web / Webflux和测试

    spring 定时器注释 Spring Webflux和Spring Web是两个完全不同的Web堆栈. 但是, Spring Webflux继续支持基于注释的编程模型 使用这两个堆栈定义的端点可能看 ...

  8. [spring-framework]Spring定时器的配置和使用

    开发中我们常常会做一些定时任务,这些任务有开始时间,并会按一定的周期或规则执行.如此我们在Java程序开发中使用定时器来处理定时任务. <!-- MessageRequestTask类中包含了m ...

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

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

  10. Spring 定时器结合线程池

    需求:Spring 定时器结合线程池处理工单 a.定时扫库查出一定数量的需要处理的工单 b.开启线程处理查出的工单 1,创建处理工单的task @Component("AppWorkOrde ...

最新文章

  1. tp3 普通模式url模式_《终身成长》:三个步骤打造成长型思维模式,普通人也可以成功...
  2. 算法刷题-数论-质数的判定、分解质因数、筛质数
  3. requirejs配置问题
  4. QT的QQmlProperty类的使用
  5. 04-windows上安装Kibana
  6. ASP.NET 2.0的编译行为
  7. jQuery.ajax() 设置 Headers 中的 Accept 内容
  8. Atitit. null错误的设计 使用Optional来处理null
  9. apex乱码_[请教]apex安装简体中文语言包的步骤
  10. 图解AUTOSAR(四)——基础软件层(BSW)
  11. 《OpenCv视觉之眼》Python图像处理三 :Opencv图像属性、ROI区域获取及通道处理
  12. tailwindcss使用教程
  13. W74 - 999、云计算工程师认证
  14. 【Unity2D】制作可以左右移动的平台
  15. 细数N个获取天气信息的免费 API ,附超多免费可用API 推荐(三)
  16. Vue之鼠标悬停显示页面加载时间
  17. 无线传感器实验-低功率无线信道建模
  18. 设置全局css/less/sass样式and优化与style-resources-loader的理解
  19. OSChina 周一乱弹 —— 一次失败的网恋经历
  20. 【译文】如何培养自信的习惯(How to Bulid the Confidence Habit)

热门文章

  1. Python实现批量生成二维码小工具
  2. Python3实现百度云盘资源自动转存
  3. 低智商社会,娱乐至死,2书推荐,世界12大理论,
  4. i386/i686/x86-64的区别
  5. 求极限简单总结 (基础)
  6. 番茄时间管理法(Pomodoro Technique):一个番茄是如何让你工作更有效率的
  7. HTML5轮播图全代码
  8. 前端工程化——Livereload和HMR、本地开发服务器
  9. 普元的ajax,普元EOS平台介绍
  10. php gd libpng,libpng版本问题导致的PHP调用gd扩展出错解决方案