java项⽬中定时任务之Quartz的应⽤
Quartz是个开放源码项⽬,提供了丰富的作业调度集。我⽬前接触到的quartz只是在我做的java项⽬中定时执⾏任务,我的项⽬因为是在
spring的基础上搭建的想要整合quartz⾮常的简单。
对于⾮spring项⽬的应⽤,它也很强⼤因为我没有实际测试过不做介绍。如果有需要的可以查看软件⼯程师MichaelLipton和IT架构师
SoobaekJang对QuartzAPI进⾏的介绍。链接地址:
下⾯主要说⼀个quartz在spring项⽬中的应⽤
⾸先添加所需要的jar包:和spring框架所需要的架包
⾸先写个⼀个定时执⾏任务的类
publicclassQuartzJob{
publicvoidwork()
{
Dated=newDate();
SimpleDateFormatsdf=newSimpleDateFormat("HH:mm:");//时:分:秒:毫秒
n("Quartz的任务调度"+(d));
}
//⼿动启动测试是否定时任务是否编写成功
publicstaticvoidmain(String[]args){
String[]configs={"file:D:/Workspaces/MyEclip8.5/.metadata/.me_tcat/webapps/zcz_test/WEB-INF/class/"};
ApplicationContextac=newClassPathXmlApplicationContext(configs);
}
}
在写⼀个spring的配置⽂件(名字随便起,但要在引⽤)
<?xmlversion="1.0"encoding="UTF-8"?>
如果把id为localQuartzScheduler的bean中添加上lazy-init='fal'那么容器启动就会执⾏调度程序.如果想⼿动启动则运⾏上⾯的类就⾏
在触发器中可以配置多个定时任务,如图上⾯代码注销的地⽅,关于quartz的定时时间的写法规范在本⽂的最后说明
这些星号由左到右按顺序代表:*******
格式:[秒][分][⼩时][⽇][⽉][周][年]
序号说明是否必填允许填写的值允许的通配符
1秒是0-59,-*/
2分是0-59,-*/
3⼩时是0-23,-*/
4⽇是1-31,-*?/LW
5⽉是1-12orJAN-DEC,-*/
6周是1-7orSUN-SAT,-*?/L
#7年否empty或1970-2099,-*/
通配符说明:
(1)*表⽰所有值.例如:在分的字段上设置"*",表⽰每⼀分钟都会触发。
(2)?表⽰不指定值。使⽤的场景为不需要关⼼当前设置这个字段的值。例如:要在每⽉的10号触发⼀个操作,但不关⼼是周⼏,所以需要
周位置的那个字段设置为"?"具体设置为00010*?
(3)-表⽰区间。例如在⼩时上设置"10-12",表⽰10,11,12点都会触发。
(4),表⽰指定多个值,例如在周字段上设置"MON,WED,FRI"表⽰周⼀,周三和周五触发
(5)/⽤于递增触发。如在秒上⾯设置"5/15"表⽰从5秒开始,每增15秒触发(5,20,35,50)。在⽉字段上设置'1/3'所⽰每⽉1号开始,
每隔三天触发⼀次。
(6)L表⽰最后的意思。在⽇字段设置上,表⽰当⽉的最后⼀天(依据当前⽉份,如果是⼆⽉还会依据是否是润年[leap]),在周字段上表⽰
星期六,相当于"7"或"SAT"。如果在"L"前加上数字,则表⽰该数据的最后⼀个。例如在周字段上设置"6L"这样的格式,则表⽰“本⽉最后⼀
个星期五"
(7)W表⽰离指定⽇期的最近那个⼯作⽇(周⼀⾄周五).例如在⽇字段上设置"15W",表⽰离每⽉15号最近的那个⼯作⽇触发。如果15号
正好是周六,则找最近的周五(14号)触发,如果15号是周未,则找最近的下周⼀(16号)触发.如果15号正好在⼯作⽇(周⼀⾄周五),则就在
该天触发。如果指定格式为"1W",它则表⽰每⽉1号往后最近的⼯作⽇触发。如果1号正是周六,则将在3号下周⼀触发。(注,"W"前只能设
置具体的数字,不允许区间"-").
(8)'L'和'W'可以⼀组合使⽤。如果在⽇字段上设置"LW",则表⽰在本⽉的最后⼀个⼯作⽇触发(⼀般指发⼯资)
#序号(表⽰每⽉的第⼏个周⼏),例如在周字段上设置"6#3"表⽰在每⽉的第三个周六.注意如果指定"#5",正好第五周没有周六,则不会触发
该配置(⽤在母亲节和⽗亲节再合适不过了)
(9)周字段的设置,若使⽤英⽂字母是不区分⼤⼩写的MON与mon相同.
常⽤⽰例:
0012**?每天12点触发
01510?**每天10点15分触发
01510**?每天10点15分触发
01510**?*每天10点15分触发
01510**?20052005年每天10点15分触发
0*14**?每天下午的2点到2点59分每分触发
00/514**?每天下午的2点到2点59分(整点开始,每隔5分触发)
00/514,18**?每天下午的2点到2点59分(整点开始,每隔5分触发)每天下午的18点到18点59分(整点开始,每隔5分触发)
00-514**?每天下午的2点到2点05分每分触发
010,4414?3WED3⽉分每周三下午的2点10分和2点44分触发(特殊情况,在⼀个时间设置⾥,执⾏两次或两次以上的情况)
0592?*FRI每周5凌晨2点59分触发;
01510?*MON-FRI从周⼀到周五每天上午的10点15分触发
0151015*?每⽉15号上午10点15分触发
01510L*?每⽉最后⼀天的10点15分触发
01510?*6L每⽉最后⼀周的星期五的10点15分触发
01510?*6L2002-2005从2002年到2005年每⽉最后⼀周的星期五的10点15分触发
01510?*6#3每⽉的第三周的星期五开始触发
00121/5*?每⽉的第⼀个中午开始每隔5天触发⼀次
011111111?每年的11⽉11号11点11分触发(光棍节)
本文发布于:2022-11-26 05:33:08,感谢您对本站的认可!
本文链接:http://www.wtabcd.cn/fanwen/fan/90/23163.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |