Spring 定时器配置
2016-03-26 16:28
246 查看
Spring配置使用注解配置定时器很简单,只要@Scheduled(cron = "0 0 0 1 * ?")即可配置一个定时器,至于定时器的几种配置方式,这里暂时不聊,有时间再去研究研究
反而这个定时器配置,每次都是用的时候去百度的,一知半解,今天有时间终于把它完整的学习了下,贴了一些说明过来,给大家看看:http://blog.knowsky.com/260132.htm
1.定时器配置总共可以有7个字段,位置是:秒 分 时 日 月 周几 年(可选)
他们的具体取值范围是:
秒【0-59 , - * /】
分【0-59 , - * /】
时【0-23 , - * /】
日【1-31 , - * / ? L W C】
月【1-12】【JAN-DEC】【, - * /】
礼拜【1-7 , - * / ? L C #】
年(可选)【1970-2099 , - * /】
2.它们的具体意义是:
【*】可以用于所有字段,表示在取值范围内的每一个递增,如在秒中则表示每一秒。
【,】可以用于所有字段,表示或的意思,如在分钟 15,45 表示在15分或45分的时候
【-】可以用于所有字段,表示范围,如在时 1-3 表示1点到3点的每一个小时
【/】可以用于所有字段,表示递增,如在分钟 5/15 表示在允许的范围内从5分开始每15分钟执行一次,即等效于 5,20,35,50
【L】可以用于日和礼拜字段,表示最后的意思,是Last的缩写,在日中表示这个月的最后一天,在礼拜中表示7或者星期六(注意老外的1是礼拜日)
L有一个特殊的用法,就是在礼拜这个字段里面使用,表示“该月最后一个星期X”的意思,如6L,表示该月最后一个星期五。
【W】只用于日字段,表示工作日的意思,会执行离你制定日期最近的一个工作日,如“1W”表示“离1号最近的工作日”,假如1号是周二,则最近的工作日就是1号,假如1号是周六,则会在3号就是周一执行,它不能越界到上一个月的星期五。
LW可以组合使用,表示“这个月的最后一个工作日”。
【#】只用于礼拜字段,表示“第X个礼拜X”的意思,如7#3,表示本月第三个礼拜六的意思,假如本月没有第三个礼拜六,则不执行
【C】可以用于日和礼拜字段,是“Calendar”的缩写,表示为基于相关日历所计算出来的值
【?】这个是一个比较特殊的匹配符,表示排除重复的意思,你可能也注意到了,礼拜字段跟日字段可能会有冲突,而如果你只是想表示其中一个的话,可以使用?来代替日或这个礼拜,这样定时器只会根据另外一个值来执行,如“0 0 12 * * ?”,因为日字段用了*,礼拜字段就没有必要再指定值了,所以用?就可以了。
3.说的好不如自己看看例子吧:
"0 0 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:55分结束每5分钟一次触发
"0 0/5 14,18 * * ?"每天的下午2点至2:55和6点至6点55分两个时间段内每5分钟一次触发
"0 0-5 14 * * ?"每天14:00至14:05每分钟一次触发
"0 10,44 14 ? 3 WED"三月的每周三的14:10和14: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
反而这个定时器配置,每次都是用的时候去百度的,一知半解,今天有时间终于把它完整的学习了下,贴了一些说明过来,给大家看看:http://blog.knowsky.com/260132.htm
1.定时器配置总共可以有7个字段,位置是:秒 分 时 日 月 周几 年(可选)
他们的具体取值范围是:
秒【0-59 , - * /】
分【0-59 , - * /】
时【0-23 , - * /】
日【1-31 , - * / ? L W C】
月【1-12】【JAN-DEC】【, - * /】
礼拜【1-7 , - * / ? L C #】
年(可选)【1970-2099 , - * /】
2.它们的具体意义是:
【*】可以用于所有字段,表示在取值范围内的每一个递增,如在秒中则表示每一秒。
【,】可以用于所有字段,表示或的意思,如在分钟 15,45 表示在15分或45分的时候
【-】可以用于所有字段,表示范围,如在时 1-3 表示1点到3点的每一个小时
【/】可以用于所有字段,表示递增,如在分钟 5/15 表示在允许的范围内从5分开始每15分钟执行一次,即等效于 5,20,35,50
【L】可以用于日和礼拜字段,表示最后的意思,是Last的缩写,在日中表示这个月的最后一天,在礼拜中表示7或者星期六(注意老外的1是礼拜日)
L有一个特殊的用法,就是在礼拜这个字段里面使用,表示“该月最后一个星期X”的意思,如6L,表示该月最后一个星期五。
【W】只用于日字段,表示工作日的意思,会执行离你制定日期最近的一个工作日,如“1W”表示“离1号最近的工作日”,假如1号是周二,则最近的工作日就是1号,假如1号是周六,则会在3号就是周一执行,它不能越界到上一个月的星期五。
LW可以组合使用,表示“这个月的最后一个工作日”。
【#】只用于礼拜字段,表示“第X个礼拜X”的意思,如7#3,表示本月第三个礼拜六的意思,假如本月没有第三个礼拜六,则不执行
【C】可以用于日和礼拜字段,是“Calendar”的缩写,表示为基于相关日历所计算出来的值
【?】这个是一个比较特殊的匹配符,表示排除重复的意思,你可能也注意到了,礼拜字段跟日字段可能会有冲突,而如果你只是想表示其中一个的话,可以使用?来代替日或这个礼拜,这样定时器只会根据另外一个值来执行,如“0 0 12 * * ?”,因为日字段用了*,礼拜字段就没有必要再指定值了,所以用?就可以了。
3.说的好不如自己看看例子吧:
"0 0 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:55分结束每5分钟一次触发
"0 0/5 14,18 * * ?"每天的下午2点至2:55和6点至6点55分两个时间段内每5分钟一次触发
"0 0-5 14 * * ?"每天14:00至14:05每分钟一次触发
"0 10,44 14 ? 3 WED"三月的每周三的14:10和14: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
相关文章推荐
- java IO流 总结(未完)
- Java多线程之线程协作
- Java字符串操作
- eclipse代码提示
- Java笔记---云服务使用中的报错
- 【细说Java】Java的重写与隐藏
- Java 内存区域和GC机制
- JAVA 线程同步
- eclipse更换字体
- 通过MyEclipse生成Hibernate类文件和hbm.xml文件,或者annotation文件
- Java 动态代理机制
- Java笔记---Mysql使用中的报错
- Java并发编程:Lock
- NetBeans invalid jdkhome specified 问题解决方法
- 20145305 《Java程序设计》第4周学习总结
- Java并发编程
- java.lang.IllegalArgumentException: Does not contain a valid host :port authority
- 多线程详解java.util.concurrent
- Mybatis与Spring整合连接MySQL
- jdk\willy\集群安装