有两种流行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定时器_Spring定时器的两种实现方式相关推荐

  1. Spring AOP拦截规则的两种定义方式

    Spring AOP拦截规则的两种定义方式 AOP的根本目的就是解耦,分开业务代码与系统共用代码,例如打印日志. Spring支持AspectJ的注解式切面编程,主要包含4个部分,分别是 使用@Asp ...

  2. 初始化一个java空数组_Java 数组的两种初始化方式

    一.数组 1.数组中存储元素的类型是统一的,每一个元素在内存中所占用的空间大小是相同的,知道数组的首元素的内存地址,要查找的元素只要知道下标,就可以快速的计算出偏移量,通过首元素内存地址加上偏移量,就 ...

  3. java匿名内部类_java中匿名内部类的两种实现方式

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

  4. eclipse maven项目 class类部署不到tomcat下_Spring Boot的两种部署方式:jar包和war包

    前言 Spring Boot可以通过在pom中配置spring-boot-maven-plugin插件打包,支持两种打包部署方式jar包部署和war包部署. jar包部署 默认的打包方式是jar包,或 ...

  5. 将java对象存储到redis数据库(两种实现方式)

    本文为转载内容,特此声明,如若侵权,请联系删除,原文地址:https://www.cnblogs.com/potentPrince/p/8668544.html redis主要存储类型最常用的五种数据 ...

  6. Java防止Xss注入json_XSS的两种攻击方式及五种防御方式

    XSS介绍 跨站脚本攻击指的是自己的网站运行了别的网站里面的代码 攻击原理是原本需要接受数据但是一段脚本放置在了数据中: 该攻击方式能做什么? 获取页面数据 获取Cookies 劫持前端逻辑 发送请求 ...

  7. Spring配置文件applicationContext.xml的两种拆分方式

    第一种: 通过web.xml配置加载spring上下文环境,其配置方式如下: web.xml [xhtml] view plain copy <context-param> <par ...

  8. java的login_Java中login的两种实现方式

    方式一:将VO的东西封装到Action里面 编写Action方法 package action; import com.opensymphony.xwork2.ActionSupport; publi ...

  9. Spring与Hibernate两种组合方式

    Spring与Hibernate大致有两种组合方式,主要区别是一种是在Hibernate中的hibernate.cfg.xml中配置数据源,一种是借助Spring的jdbc方式在Spring的appl ...

  10. java调用外联服务用xml,Spring IOC 依赖注入的两种方式:XML和注解

    IoC,直观地讲,就是容器控制程序之间的关系,而非传统实现中,由程序代码直接操控.这也就是所谓"控制反转"的概念所在.控制权由应用代码中转到了外部容器,控制权的转移是所谓反转.Io ...

最新文章

  1. mysql 8.0 docker_Docker安装MySQL8.0的实现方法
  2. 解决 yum时 Error: Protected multilib versions报错
  3. 软件能力[置顶] 程序员如何成为设计师,软件公司如何成为苹果?
  4. Sage CRM升级注意事项一
  5. php上传视频文件代码,php上传视频的代码
  6. flex自定义的分区域状态显示控件——原创
  7. 收货地址 - 删除收货地址
  8. webstorm vue代码修改后不更新问题
  9. Linux系统个性化设置
  10. 转:PHP程序里的敏感信息处理方法
  11. 用python实现bt下载_python实现bt种子 torrent转magnet
  12. 带着梦想,追逐属于你我的那份真彩
  13. 美图欣赏,转载[原文链接http://toutiao.com/a4001258776/]
  14. 1.1.1.1校园网_突破校园网限制,开启寝室Wifi
  15. 【自动驾驶】PID实现轨迹跟踪
  16. C语言入门——取余运算
  17. MATLAB之GIF动图的绘制
  18. ubuntu安装搜狗输入法老是没中文怎么办
  19. 【Python】python 程序示例
  20. UE4轮廓描边【非后处理】

热门文章

  1. 游戏开发中的基本数学与物理
  2. 微小区客户成功服务流程
  3. GB28181协议错误码返回码整理
  4. 中国各个省市区(县)级联数据
  5. 各种数值积分方法总结(从梯形积分、辛普森积分到龙贝格积分、自适应积分、高斯积分等)
  6. 成品app直播源码,fragment切换 常用写法
  7. Linux下rpm包x86、i386、i486、i586、i686和x86_64这些后缀含义
  8. GD32F303x U盘使用
  9. java校园自行车租赁买卖系统ssm
  10. USB 协议Audio应用