目前有两种流行Spring定时器配置:Java的Timer类和OpenSymphony的Quartz。

1.Java Timer定时

首先继承java.util.TimerTask类实现run方法

import java.util.TimerTask;

public class EmailReportTask extends TimerTask{

@Override

public void run() {

...

}

}

在Spring定义

...

配置Spring定时器

86400000value>

property>

bean>

timerTask属性告诉ScheduledTimerTask运行哪个。86400000代表24个小时

启动Spring定时器

Spring的TimerFactoryBean负责启动定时任务

list>

property>

bean>

scheduledTimerTasks里显示一个需要启动的定时器任务的列表。

可以通过设置delay属性延迟启动

86400000value>

property>

3600000value>

property>

bean>

这个任务我们只能规定每隔24小时运行一次,无法精确到某时启动

2.Quartz定时器

首先继承QuartzJobBean类实现executeInternal方法

import org.quartz.JobExecutionContext;

import org.quartz.JobExecutionException;

import org.springframework.scheduling.quartz.QuartzJobBean;

public class EmailReportJob extends QuartzJobBean{

protected void executeInternal(JobExecutionContext arg0)

throws JobExecutionException {

...

}

}

在Spring中定义

EmailReportJobvalue>

property>

entry>

map>

property>

bean>

在这里我们并没有直接声明一个EmailReportJob Bean,而是声明了一个JobDetailBean。这个是Quartz的特点。JobDetailBean是Quartz的org.quartz.JobDetail的子类,它要求通过jobClass属性来设置一个Job对象。

使用Quartz的JobDetail中的另一个特别之处是EmailReportJob的courseService属性是间接设置的。JobDetail的jobDataAsMap属性接受一个Map,包括设置给jobClass的各种属性,当。JobDetailBean实例化时,它会将courseService Bean注入到EmailReportJob 的courseService 属性中。

启动定时器

Quartz的org.quartz.Trigger类描述了何时及以怎样的频度运行一个Quartz工作。Spring提供了两个触发器SimpleTriggerBean和CronTriggerBean。

SimpleTriggerBean与scheduledTimerTasks类似。指定工作的执行频度,模仿scheduledTimerTasks配置 .

360000value>

property>

86400000value>

property>

bean>

startDelay也是延迟1个小时启动

CronTriggerBean指定工作的准确运行时间

0 0 6 * * ?value>

property>

bean>

属性cronExpression告诉何时触发。最神秘就是cron表达式:

Linux系统的计划任务通常有cron来承担。一个cron表达式有至少6个(也可能7个)有空格分隔的时间元素。从左到右:

1.秒2.分3.小时4.月份中的日期(1-31)5.月份(1-12或JAN-DEC)6.星期中的日期(1-7或SUN-SAT)7.年份(1970-2099)

每个元素都显示的规定一个值(如6),一个区间(9-12),一个列表(9,11,13)或一个通配符(*)。因为4和6这两个元素是互斥的,因此应该通过设置一个问号(?)来表明不想设置的那个字段,“/”如果值组合就表示重复次数(10/6表示每10秒重复6次)。

启动定时器

list>

property>

bean>

triggers属性接受一组触发器。

好了,本文内容到此结束了,写的还不错吧,有不足之处,欢迎各位大侠提出宝贵意见。

java spring定时器_JAVA中 Spring定时器的两种实现方式相关推荐

  1. java map遍历_Java中Map集合的两种遍历方式

    Java中的map遍历有多种方法,从最早的Iterator,到java5支持的foreach,再到java8 Lambda,让我们一起来看下Java中Map集合的两种遍历方式! 关于遍历Map集合的几 ...

  2. java中两种遍历集合的方式_Java中Map集合的两种遍历方式

    Java中的map遍历有多种方法,从最早的Iterator,到java5支持的foreach,再到java8 Lambda,让我们一起来看下Java中Map集合的两种遍历方式! 关于遍历Map集合的几 ...

  3. java多线程区别_Java中实现多线程的两种方式之间的区别

    Java提供了线程类Thread来创建多线程的程序.其实,创建线程与创建普通的类的对象的操作是一样的,而线程就是Thread类或其子类的实例对象.每个Thread对象描述了一个单独的线程.要产生一个线 ...

  4. 1.JavaScript中定义数组的两种主要方式

    JavaScript中定义数组的两种主要方式(new Array()和[]方式) new Array() ①可以用像JAVA的那种写法的方式定义,如 var arr = new Array() 这样定 ...

  5. java 调用枚举种方法_Java中枚举类型的一种使用方式

    今天改同事的代码发现同事的代码中有大量的if else语句.很不美观而且可读性太差. 因为需要给前端一个key,value的列表.这个列表写死.然而同事的代码. 放几张图,大家自己感受.我都不知道以后 ...

  6. java多线程同步的四种方法_java中实现多线程的两种方法

    java多线程有几种实现方法,都是什么?同步有几种实java中多线程的实现方法有两种:1.直接继承thread类:2.实现runnable接口:同步的实现方法有五种:1.同步方法:2.同步代码块:3. ...

  7. java中集合的排序_Java中集合排序的两种方法

    import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.u ...

  8. 【Spring AOP(2)篇】原理及两种实现方式(cglibjdk动态代理)

    简介: Spring AOP(Aspect-Oriented Programming,面向切面编程)是 Spring 框架的一个重要特性,用于解耦和切割业务逻辑,是实现面向切面编程的重要手段之一.本文 ...

  9. Java中定义字符串的两种常见方式、使用==和equals()比较字符串

    在讲使用==和equals()比较字符串之前,我们首先要讲定义字符串的两种常见方式,一种是定义一个常量,即直接定义字符串,一种是通过new关键字定义一个变量,即使用String类定义字符串,如下图: ...

  10. Java中匿名类的两种实现方式

    使用匿名内部类课使代码更加简洁.紧凑,模块化程度更高.内部类能够访问外部内的一切成员变量和方法,包括私有的,而实现接口或继承类做不到.然而这个不是我说的重点,我说的很简单,就是匿名内部类的两种实现方式 ...

最新文章

  1. python封装api linux_python Socket编程-python API 与 Linux Socket API之间的关系
  2. linux 脏牛提权 cve-2016-5159
  3. 性能提升-停用模块更新监控
  4. ArrayList练习——存储随机、存储自定义、按指定格式输出、筛选集合
  5. 框架:SpringMVC常用注解总结
  6. 菜鸟教程python3 mysql_Python 操作 MySQL 数据库
  7. allegropcb怎么导出成cad_私藏技巧分享!CAD中的表格坐标快速输出成Excel!
  8. gan学到的是什么_GAN推动生物学研究
  9. 【华为大咖分享】9.2018加速度,洞悉DevOps高效能组织的秘密(后附PPT下载地址)
  10. fastapi 的启动方式
  11. 学习 Python 这么多年,掉过的那些安全漏洞
  12. 用完HttpWebResponse时别忘了调用Close方法
  13. sql server dba
  14. 【心电信号】基于matlab Simulink胎儿心电信号提取【含Matlab源码 1550期】
  15. 实现atoi函数(C++实现)
  16. 一台服务器如何做两个站点,一台服务器实现多个Web站点
  17. 京东商城选择地址信息
  18. windows 编译n2n
  19. 若依管理系统漏洞利用
  20. [Caffe] Caffe介绍

热门文章

  1. 台式计算机卡拉ok点歌系统,如何用现有的台式电脑改造歌厅点歌系统
  2. ad域推送软件_ManageEngine ADManager Plus(AD域管理工具) V7.0.1 官方中文版
  3. java web 和js区别_jsp和javascript之间有什么区别?
  4. 机器学习——神经网络(四):BP神经网络
  5. php滑动解锁验证码,javascript实现支付宝滑块验证码效果
  6. 【转载】「微信小程序」有哪些冲击与机会?
  7. 用c语言编程线性代数第六版答案,浅析用c语言编程求解线性代数中行列式值
  8. php手册 mac版,PHP中文手册for mac-PHP中文手册Mac版下载 V1.0.2-PC6苹果网
  9. idea中如何生成jar文件
  10. 安防系统管理服务器,安防弱电系统设计常用十个行业方案(含拓扑图)