在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专栏系列

  1.Quartz学习——Quartz大致介绍(一)

  2.Quartz学习——Quartz简单入门Demo(二)

  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的使用的更多相关文章

  1. Spring 定时器Quartz的用法

    Spring定时器Quartz的用法也很简单,需要引入quartz-all-1.5.2.jar java代码如下: package com.coalmine.desktop; import java. ...

  2. spring 定时器----quartz启动问题

    今天,突然要用到定时器,在网上查了下资料,保存下以方便后面查找: 什么是动态定时任务:是由客户制定生成的,服务端只知道该去执行什么任务,但任务的定时是不确定的(是由客户制定). 这样总不能修改配置文件 ...

  3. spring 定时器Quartz

    一.Quartz是什么 二.  核心接口 scheduler  --- 核心调度器 Job  --- 任务 JobDetail  --- 任务描述 Tigger  --- 触发器 三 . 核心接口之间 ...

  4. Spring定时器Quartz的用法

    首先导入需要的两个jar: spring-context-support-4.1.1.RELEASE.jar quartz-2.2.1.jar 1.创建两个类: 2. QuartzConfigurat ...

  5. spring定时器quartz版本问题

    如果quartz的版本是1.8.5启动会报错,修改给2.0版本以上即可 <dependency> <groupId>org.quartz-scheduler</group ...

  6. Spring定时器Quartz

    <bean id="startQuertz" lazy-init="false" autowire="no" class=" ...

  7. 两种流行Spring定时器配置:Java的Timer类和OpenSymphony的Quartz

    1.Java Timer定时 首先继承java.util.TimerTask类实现run方法 import java.util.TimerTask; public class EmailReportT ...

  8. Spring的quartz定时器同一时刻重复执行二次的问题解决

    最近用Spring的quartz定时器的时候,发现到时间后,任务总是重复执行两次,在tomcat或jboss下都如此. 打印出他们的hashcode,发现是不一样的,也就是说,在web容器启动的时候, ...

  9. java定时器,Spring定时器和Quartz定时器

    一.java定时器的应用 其实java很早就有解决定时器任务的方法了,java提供了了类java.util.TimerTask类基于线程的方式来实现定时任务的操作,然后再提供java.util.Tim ...

随机推荐

  1. UVALive - 4108 SKYLINE (吉司机线段树)

    题目链接 题意:在一条直线上依次建造n座建筑物,每座建筑物建造完成后询问它在多长的部分是最高的. 比较好想的方法是用线段树分别维护每个区间的最小值mi和最大值mx,当建造一座高度为x的建筑物时,若mi ...

  2. MySQL的一些常用sql函数(持续更新。。)

    1. 字符串拼接函数 :CONCAT(str1,str2,...) SELECT CONCAT('AAA','BBB') STR; //AAABBB 2. 判断是否为null,为null就指定另外一个 ...

  3. BestCoder Round #1 第二题 项目管理

    // 第二题 我记得很久很久很久以前看过这样的题目,忘记是哪的区域赛了 // 记得有人说和节点度数有关,我记不清了,反正当时完全不懂 // 然后我想了想,估计就是更新节点度数有关,YY出来可能只要更新 ...

  4. Python学习-lambda表达式

    lambda只是一个表达式,函数体比def简单很多.lambda的主体是一个表达式,而不是一个代码块.仅仅能在lambda表达式中封装有限的逻辑进去.lambda表达式是起到一个函数速写的作用.允许在 ...

  5. 【angularJS】Route路由

    介绍 AngularJS 路由允许我们通过不同的 URL 访问不同的内容. 通过 AngularJS 可以实现多视图的单页Web应用(single page web application,SPA). ...

  6. {Reship}{Meanshift}Mean Shift Tracking: 2000-2012回顾

    Mean Shift跟踪从 2000年被提出至今已经经历了十余个年头,从被大量灌水到如今不屑被拿来作为比较算法,经历了辉煌高潮的 Mean-Shift based Tracking正在慢慢淡出主流tr ...

  7. Makefile常用知识点

    格式 目标:最终要去生成的文件, 定格写,后面是冒号(冒号后面是依赖) 依赖:用来生成目标的源材料 命令:加工的方法,命令前面一定是Tab, make的过程就是使用命令将依赖加工成目标的过程 工作原理 ...

  8. hashids 了解

    用于隐藏真实的id 原理是从数字经过一个加盐(salted)算法产生一个哈希(hash)字符串.这样算法就是通过混淆使结果具有不可预测性,而唯一性依然由数字本身来达成,从而得到(类似 youtube ...

  9. jenkins api 使用

    1.  java <dependency> <groupId>com.offbytwo.jenkins</groupId> <artifactId>je ...

  10. Python学习系列(八)( 面向对象基础)

     Python学习系列(八)( 面向对象基础) Python学习系列(七)( 数据库编程) 一,面向对象 1,域:属于一个对象或类的变量.有两种类型,即实例变量—属于每个实例/类的对象:类变量—属于类 ...