在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处理规则(四)

  

  

最新文章

  1. Tomcat日志切割
  2. 药企信息sop
  3. C#winform调用外部程序,等待外部程序执行完毕才执行下面代码
  4. WindowsPhone开发—— 使用手绘图片做景区导览地图
  5. MFC中的各种DC区别
  6. iNode for linux install
  7. RPC进阶篇
  8. css笔记14:css文件之间可以相互引用
  9. JasperReport原理解析之(一)
  10. hibernate 对象状态异常:object references an unsaved transient instance - save the transient instance before flushing
  11. oracle 添加表分区
  12. HDU 5052 Yaoge’s maximum profit 光秃秃的树链拆分 2014 ACM/ICPC Asia Regional Shanghai Online
  13. sench touch 自定义小图标(转)
  14. 漏洞复现——Apache HTTPD多后缀解析漏洞
  15. ASP.NET Web Service 标准SOAP开发案例代码(自定义验证安全头SOAPHeader)
  16. 预防 app crash 之 unrecognized selector
  17. [转]kafka详解
  18. js实现各种复制到剪贴板的方法
  19. MySQL中JSON字段的使用技巧
  20. print&input--Python

热门文章

  1. JS监听键盘事件(回车键)
  2. BZOJ3209 花神的数论题 【组合数学+数位DP+快速幂】*
  3. Hbase rowkey热点问题
  4. android 和主线程有关的小问题
  5. 《selenium2 python 自动化测试实战》(16)——js操作补充
  6. Windows常用配置和sublime快捷键
  7. javascript异常处理。 屏蔽异常
  8. 如何点焊过的镍片再次焊接到 PCBA 上?
  9. Python WebServer with MSSql
  10. CentOS部署NetCore - 3. 部署站点