spring添加触发器+quartz.doc

上传人:sk****8 文档编号:2989447 上传时间:2019-05-16 格式:DOC 页数:7 大小:139KB
下载 相关 举报
spring添加触发器+quartz.doc_第1页
第1页 / 共7页
spring添加触发器+quartz.doc_第2页
第2页 / 共7页
spring添加触发器+quartz.doc_第3页
第3页 / 共7页
spring添加触发器+quartz.doc_第4页
第4页 / 共7页
spring添加触发器+quartz.doc_第5页
第5页 / 共7页
点击查看更多>>
资源描述

1、Spring 里面添加触发器假如需要代码自动执行某些操作,这个时候可以利用 spring 结合 Quartz 来完成这个功能。Quqrtz 官网: http:/www.quartz-scheduler.org代码部分:需要添加的架包:quqrtz-1.6 或者 1.8;Spring context supportSpring webComming loggingCommons-collections代码很简单:/* * author sixi * version 0.1 * Company:Tsinghua* Date:2012-09-15* Description:这是一个执行调度的具体类,

2、在 Spring 配置文件中指定调用此类的 work 方法* */package com.tsinghua.test;import java.util.Date;/* 使用 spring+Quartz 执行任务调度的具体类* */public class MyJob /* Description:具体工作的方法,此方法只是向控制台输出当前时间,* 输入的日志在:%tomcatRoot%logstomcat7-stdout.yyyy-MM-dd.log 中,* 其中,yyyy-MM-dd 为部署的日期,经试验发现默认情况下并不是每天都生成一个 stdout 的日志文件* return 返回 vo

3、id* */public void work()System.out.println(“当前时间:“+ new Date().toString(); /End of MyJob4.配置 web.xml,具体配置文件如下:SpringQuartzDemoindex.jspcontextConfigLocation/WEB-INF/classes/applicationContext.xmlorg.springframework.web.context.ContextLoaderListener5.配置 applicationContext.xmlwork0/1 * * * * ?可以遇到的问题E

4、rror creating bean with name reportTask defined in class path resource applicationContext.xml: Invocation of init method failed; nested exception is java.lang.InstantiationError: org.quartz.JobDetail会报这种错表示无法完成我们写的类的初始化,不能完成初始化方法实际上问题是:用的是 quartz 2.X 版本吧,在 1.X 版本里,org.quartz.JobDetail 是一个类,但是在 2.x 里

5、已经改成了 interface;Spring3.x 还不支持 quartz 2 所以把 jar 包换成 1.X 版本所以换成 1.8 或者 1.6 试下http:/ CronExpression 表达式一个 cron 表达式有至少6个(也可能7个)有空格分隔的时间元素。按顺序依次为1.秒(059)2.分钟(059)3.小时(023) 4.天(月) (031,但是你需要考虑你月的天数)5.月(011 )6.天(星期) (17 1=SUN 或 SUN,MON,TUE,WED, THU,FRI,SAT)7.年份(19702099)其中每个元素可以是一个值(如6),一个连续区间(9-12),一个间隔时

6、间(8-18/4)(/ 表示每隔4小时),一个列表(1,3,5),通配符。由于“月份中的日期“ 和“星期中的日期“这两个元素互斥的 ,必须要对其中一个设置?.0 0 10,14,16 * * ? 每天上午10点,下午2点,4点0 0/30 9-17 * * ? 朝九晚五工作时间内每半小时0 0 12 ? * WED 表示每个星期三中午12点有些子表达式能包含一些范围或列表例如:子表达式(天(星期) )可以为 “MON-FRI”, “MON,WED ,FRI”, “MON-WED,SAT”“*”字符代表所有可能的值因此, “*”在子表达式(月)里表示每个月的含义, “*”在子表达式(天(星期)

7、)表示星期的每一天“/”字符用来指定数值的增量例如:在子表达式(分钟)里的“0/15 ”表示从第0分钟开始,每15分钟 ;在子表达式(分钟)里的“3/20”表示从第3分钟开始,每20分钟(它和“ 3,23 ,43” )的含义一样“?”字符仅被用于天(月)和天(星期)两个子表达式,表示不指定值当2个子表达式其中之一被指定了值以后,为了避免冲突,需要将另一个子表达式的值设为“?”“L” 字符仅被用于天(月)和天(星期)两个子表达式,它是单词“last”的缩写但是它在两个子表达式里的含义是不同的。在天(月)子表达式中, “L”表示一个月的最后一天 ,在天(星期)自表达式中, “L”表示一个星期的最后

8、一天,也就是 SAT如果在“L”前有具体的内容,它就具有其他的含义了例如:“6L”表示这个月的倒数第天, “”表示这个月的最后一个星期五注意:在使用“L”参数时,不要指定列表或范围,因为这会导致问题=CronTrigger 配置完整格式为: 秒 分 小时 日 月 周 年序号 说明 是否必填 允许填写的值 允许的通配符1 秒 是 0-59 , - * /2 分 是 0-59 , - * /3 小时 是 0-23 , - * /4 日 是 1-31 , - * ? / L W5 月 是 1-12 or JAN-DEC , - * /6 周 是 1-7 or SUN-SAT , - * ? / L

9、#7 年 否 empty 或 1970-2099 , - * /通配符说明:* 表示所有值. 例如:在分的字段上设置 “*“,表示每一分钟都会触发。? 表示不指定值。使用的场景为不需要关心当前设置这个字段的值。例如: 要在每月的10号触发一个操作,但不关心是周几,所以需要周位置的那个字段设置为“?“ 具体设置为 0 0 0 10 * ?- 表示区间。例如 在小时上设置 “10-12“,表示 10,11,12点都会触发。, 表示指定多个值,例如在周字段上设置 “MON,WED,FRI“ 表示周一,周三和周五触发/ 用于递增触发。如在秒上面设置“5/15“ 表示从5秒开始,每增15秒触发(5,20

10、,35,50)。 在月字段上设置1/3所示每月1号开始,每隔三天触发一次。L 表示最后的意思。在日字段设置上,表示当月的最后一天(依据当前月份,如果是二月还会依据是否是润年leap), 在周字段上表示星期六,相当于“7“或“SAT“。如果在“L“ 前加上数字,则表示该数据的最后一个。例如在周字段上设置“6L“这样的格式,则表示“本月最后一个星期五“ W 表示离指定日期的最近那个工作日(周一至周五). 例如在日字段上设置“15W“,表示离每月15号最近的那个工作日触发。如果15号正好是周六,则找最近的周五(14号)触发, 如果15号是周未,则找最近的下周一(16号) 触发. 如果15号正好在工作

11、日(周一至周五) ,则就在该天触发。如果指定格式为 “1W“,它则表示每月1 号往后最近的工作日触发。如果1号正是周六,则将在3号下周一触发。( 注,“W“ 前只能设置具体的数字,不允许区间“-“).# 序号(表示每月的第几个周几),例如在周字段上设置“6#3“表示在每月的第三个周六. 注意如果指定“#5“,正好第五周没有周六,则不会触发该配置(用在母亲节和父亲节再合适不过了) ;小提示:L和 W可以一组合使用。如果在日字段上设置“LW“, 则表示在本月的最后一个工作日触发;周字段的设置,若使用英文字母是不区分大小写的,即 MON 与 mon 相同;常用示例:0 0 12 * * ? 每天12

12、点触发0 15 10 ? * * 每天10点15分触发0 15 10 * * ? 每天10点15分触发0 15 10 * * ? * 每天10点15分触发0 15 10 * * ? 2005 2005年每天10点15分触发0 * 14 * * ? 每天下午的 2点到2 点59分每分触发0 0/5 14 * * ? 每天下午的 2点到2 点59分(整点开始,每隔5分触发)0 0/5 14,18 * * ? 每天下午的 2点到2点59分、18点到18点59分(整点开始,每隔5分触发)0 0-5 14 * * ? 每天下午的 2点到2 点05分每分触发0 10,44 14 ? 3 WED 3月分每周

13、三下午的 2点10分和 2点44分触发0 15 10 ? * MON-FRI 从周一到周五每天上午的10点15分触发0 15 10 15 * ? 每月15号上午10点15分触发0 15 10 L * ? 每月最后一天的10点15分触发0 15 10 ? * 6L 每月最后一周的星期五的10点15分触发0 15 10 ? * 6L 2002-2005 从2002年到2005年每月最后一周的星期五的10点15分触发0 15 10 ? * 6#3 每月的第三周的星期五开始触发0 0 12 1/5 * ? 每月的第一个中午开始每隔5天触发一次0 11 11 11 11 ? 每年的11月11号 11点11分触发(光棍节)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育教学资料库 > 精品笔记

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。