java spring定时器_Spring定时器的两种实现方式
有两种流行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定时器的两种实现方式相关推荐
- Spring AOP拦截规则的两种定义方式
Spring AOP拦截规则的两种定义方式 AOP的根本目的就是解耦,分开业务代码与系统共用代码,例如打印日志. Spring支持AspectJ的注解式切面编程,主要包含4个部分,分别是 使用@Asp ...
- 初始化一个java空数组_Java 数组的两种初始化方式
一.数组 1.数组中存储元素的类型是统一的,每一个元素在内存中所占用的空间大小是相同的,知道数组的首元素的内存地址,要查找的元素只要知道下标,就可以快速的计算出偏移量,通过首元素内存地址加上偏移量,就 ...
- java匿名内部类_java中匿名内部类的两种实现方式
使用匿名内部类课使代码更加简洁.紧凑,模块化程度更高.内部类能够访问外部内的一切成员变量和方法,包括私有的,而实现接口或继承类做不到.然而这个不是我说的重点,我说的很简单,就是匿名内部类的两种实现方式 ...
- eclipse maven项目 class类部署不到tomcat下_Spring Boot的两种部署方式:jar包和war包
前言 Spring Boot可以通过在pom中配置spring-boot-maven-plugin插件打包,支持两种打包部署方式jar包部署和war包部署. jar包部署 默认的打包方式是jar包,或 ...
- 将java对象存储到redis数据库(两种实现方式)
本文为转载内容,特此声明,如若侵权,请联系删除,原文地址:https://www.cnblogs.com/potentPrince/p/8668544.html redis主要存储类型最常用的五种数据 ...
- Java防止Xss注入json_XSS的两种攻击方式及五种防御方式
XSS介绍 跨站脚本攻击指的是自己的网站运行了别的网站里面的代码 攻击原理是原本需要接受数据但是一段脚本放置在了数据中: 该攻击方式能做什么? 获取页面数据 获取Cookies 劫持前端逻辑 发送请求 ...
- Spring配置文件applicationContext.xml的两种拆分方式
第一种: 通过web.xml配置加载spring上下文环境,其配置方式如下: web.xml [xhtml] view plain copy <context-param> <par ...
- java的login_Java中login的两种实现方式
方式一:将VO的东西封装到Action里面 编写Action方法 package action; import com.opensymphony.xwork2.ActionSupport; publi ...
- Spring与Hibernate两种组合方式
Spring与Hibernate大致有两种组合方式,主要区别是一种是在Hibernate中的hibernate.cfg.xml中配置数据源,一种是借助Spring的jdbc方式在Spring的appl ...
- java调用外联服务用xml,Spring IOC 依赖注入的两种方式:XML和注解
IoC,直观地讲,就是容器控制程序之间的关系,而非传统实现中,由程序代码直接操控.这也就是所谓"控制反转"的概念所在.控制权由应用代码中转到了外部容器,控制权的转移是所谓反转.Io ...
最新文章
- mysql 8.0 docker_Docker安装MySQL8.0的实现方法
- 解决 yum时 Error: Protected multilib versions报错
- 软件能力[置顶] 程序员如何成为设计师,软件公司如何成为苹果?
- Sage CRM升级注意事项一
- php上传视频文件代码,php上传视频的代码
- flex自定义的分区域状态显示控件——原创
- 收货地址 - 删除收货地址
- webstorm vue代码修改后不更新问题
- Linux系统个性化设置
- 转:PHP程序里的敏感信息处理方法
- 用python实现bt下载_python实现bt种子 torrent转magnet
- 带着梦想,追逐属于你我的那份真彩
- 美图欣赏,转载[原文链接http://toutiao.com/a4001258776/]
- 1.1.1.1校园网_突破校园网限制,开启寝室Wifi
- 【自动驾驶】PID实现轨迹跟踪
- C语言入门——取余运算
- MATLAB之GIF动图的绘制
- ubuntu安装搜狗输入法老是没中文怎么办
- 【Python】python 程序示例
- UE4轮廓描边【非后处理】