Spring定时器Quartz的使用
在JavaEE系统中,我们会经常用到定时任务,比如每天凌晨生成前天报表,每一小时生成汇总数据等等,定时更新某某操作……。
我们可以使用java.util.Timer结合java.util.TimerTask来完成这项工作,但是调度控制非常不方便,并且我们需要大量的代码。
使用Quartz框架无疑是非常好的选择,并且与Spring可以非常方便的集成,下面介绍它们集成方法和Cron表达式的详细介绍。
基于XML的方式实现Spring Quartz 虽然配置起来特别的方便,但是Spring还支持基本注解的方式来配置;
参考:关于Spring 任务调度之task:scheduler与task:executor配置的详解
1、引入相应的Jar包;
2、 Spring配置文件:spring-timer.xml。;
在配置文件头部加入定时器的命名空间,xmlns 多加下面的内容

在xsi:schemaLocation多加下面的内容

自动配置扫描spring配置文件里面配置内容


任务调度器的配置详细参数说明:
task:scheduler/@pool-size:调度线程池的大小,调度线程在被调度任务完成前不会空闲
task:scheduled/@cron:cron表达式,注意,若上次任务未完成,即使到了下一次调度时间,任务也不会重复调度

任务执行器配置详细参数说明:
task:executor/@pool-size:可以指定执行线程池的初始大小、最大大小
task:executor/@queue-capacity:等待执行的任务队列的容量
task:executor/@rejection-policy:当等待队列爆了时的策略,分为丢弃、由任务执行器直接运行等方式
Demo演示:(注解版) @Service 或者@Component
|
Cron表达式的格式:秒 分 时 日 月 周 年(可选)。
常用:
@Scheduled(cron = "0/1 * * * * ? ") // 每隔1秒隔行一次
@Scheduled(cron = "0 */1 * * * ?") // 每隔1分隔行一次
@Scheduled(cron = "0 0 */30 * * ?")
字段名 允许的值 允许的特殊字符
秒 0-59 , – * /
分 0-59 , – * /
小时 0-23 , – * /
日 1-31 , – * ? / L W C
月 1-12 or JAN-DEC , – * /
周几 1-7 or SUN-SAT , – * ? / L C # MON FRI
年 (可选字段) empty, 1970-2099 , – * /
“*” : 字符可以用于所有字段,在“分”字段中设为"*"表示"每一分钟"的含义。
“?”字符:表示不确定的值
“,”字符:指定数个值
“-”字符:指定一个值的范围
“/”字符:指定一个值的增加幅度。n/m表示从n开始,每次增加m
“L”字符:用在日表示一个月中的最后一天,用在周表示该月最后 一个星期X
“W”字符:指定离给定日期最近的工作日(周一到周五)
“#”字符:表示该月第几个周X。6#3表示该月第3个周五
Quartz专栏系列
3.Quartz学习——Spring和Quartz集成详解(三)
4.Quartz学习——SSMM(Spring+SpringMVC+Mybatis+Mysql)和Quartz集成详解(四)
5.Quartz源码——JobStore保存JonDetail和Trigger源码分析(一)
6.Quartz源码——scheduler.start()启动源码分析(二)
7.Quartz源码——QuartzSchedulerThread.run() 源码分析(三)
8.Quartz源码——Quartz调度器的Misfire处理规则(四)
Spring定时器Quartz的使用的更多相关文章
- Spring 定时器Quartz的用法
Spring定时器Quartz的用法也很简单,需要引入quartz-all-1.5.2.jar java代码如下: package com.coalmine.desktop; import java. ...
- spring 定时器----quartz启动问题
今天,突然要用到定时器,在网上查了下资料,保存下以方便后面查找: 什么是动态定时任务:是由客户制定生成的,服务端只知道该去执行什么任务,但任务的定时是不确定的(是由客户制定). 这样总不能修改配置文件 ...
- spring 定时器Quartz
一.Quartz是什么 二. 核心接口 scheduler --- 核心调度器 Job --- 任务 JobDetail --- 任务描述 Tigger --- 触发器 三 . 核心接口之间 ...
- Spring定时器Quartz的用法
首先导入需要的两个jar: spring-context-support-4.1.1.RELEASE.jar quartz-2.2.1.jar 1.创建两个类: 2. QuartzConfigurat ...
- spring定时器quartz版本问题
如果quartz的版本是1.8.5启动会报错,修改给2.0版本以上即可 <dependency> <groupId>org.quartz-scheduler</group ...
- Spring定时器Quartz
<bean id="startQuertz" lazy-init="false" autowire="no" class=" ...
- 两种流行Spring定时器配置:Java的Timer类和OpenSymphony的Quartz
1.Java Timer定时 首先继承java.util.TimerTask类实现run方法 import java.util.TimerTask; public class EmailReportT ...
- Spring的quartz定时器同一时刻重复执行二次的问题解决
最近用Spring的quartz定时器的时候,发现到时间后,任务总是重复执行两次,在tomcat或jboss下都如此. 打印出他们的hashcode,发现是不一样的,也就是说,在web容器启动的时候, ...
- java定时器,Spring定时器和Quartz定时器
一.java定时器的应用 其实java很早就有解决定时器任务的方法了,java提供了了类java.util.TimerTask类基于线程的方式来实现定时任务的操作,然后再提供java.util.Tim ...
随机推荐
- [转](阿里笔试)使用多线程和sleep函数生成字符串的伪随机排列
http://blog.csdn.net/jiaowopan/article/details/12009079 C/C++(Linux平台) 注意编译连接时需要链接pthread库,即g++ XX.c ...
- BZOJ5297 CQOI2018 社交网络 【矩阵树定理Matrix-Tree】
BZOJ5297 CQOI2018 社交网络 Description 当今社会,在社交网络上看朋友的消息已经成为许多人生活的一部分.通常,一个用户在社交网络上发布一条消息(例如微博.状态.Tweet等 ...
- 深入了解 WPF Dispatcher 的工作原理(PushFrame 部分)
在上一篇文章 深入了解 WPF Dispatcher 的工作原理(Invoke/InvokeAsync 部分) 中我们发现 Dispatcher.Invoke 方法内部是靠 Dispatcher.Pu ...
- 表格头部与左侧内容随滚动条位置改变而改变(基于jQuery)
效果图如下: HTML代码: <!DOCTYPE html> <html lang="zh-CN"> <head> <meta chars ...
- java的try-with-resource机制
在java7之后可以使用try(resource1, resource2){...}这样声明之后,在try{}执行完成之后或者抛异常跳出,都会调用reouce1.close(),resource2.c ...
- opencv Mat中某点的值
Mat mat = imread("baby.jpg"); Mat p = mat.col().row(); uchar* ptr = (uchar*) p.data; ]; ]; ...
- 2、Hive UDF编程实例
Hive的UDF包括3种:UDF(User-Defined Function).UDAF(User-Defined Aggregate Function)和UDTF(User-Defined Tabl ...
- Java垃圾回收原理
无意中在网络上找到了这篇介绍垃圾回收机制的文章,好文!转一下: 垃圾回收器是如何工作的?我现在就简单的介绍一下 首先要明确几点: Java是在堆上为对象分配空间的 垃圾回收器只跟内存有关,什么IO啊, ...
- php-PSR
<?php/** * 符合psr-1,2的编程实例 */ namespace Standard; // 顶部命名空间// 空一行use Test\TestClass;//use引入类 /** * ...
- c#通过app.manifest使程序 右键 以管理员身份运行
c#通过app.manifest使程序以管理员身份运行 时间:2013-06-27 22:47来源:网络收集+本站整理 作者:jtydl 点击: 1175 次 微软在Windows Vista开始引入 ...