关于cronExpression网上可以搜到一大堆官方文档及其翻译,大部分都是出自同一篇转文,翻译的部分充满了错误和语病,尤其是关于问号(?)的解释部分,实在是没法看。还是自己研究一下吧。
官方文档上提到问号时是这样说的:
The '?' character is allowed for the day-of-month and day-of-week fields. It is used to specify 'no specific value'. This is useful when you need to specify something in one of the two fileds, but not the other. See the examples below for clarification.
大致意思是说:
问号(?)可以用在日期或星期字段,用来指明‘没有特定的值’,当你为这两个字段中的一个设定值的时候就会用到它。下面的例子中说明了这一点。
可是,在后面的例子中并没有明确说明这个问号到底起什么作用,于是我编程试验了一下,得出以下结论:
1、如官方文档解释的那样,问号(?)的作用是指明该字段‘没有特定的值’;
2、星号(*)和其它值,比如数字,都是给该字段指明特定的值,只不过用星号(*)代表所有可能值;
3、cronExpression对日期和星期字段的处理规则是它们必须互斥,即只能且必须有一个字段有特定的值,另一个字段必须是‘没有特定的值’;
4、问号(?)就是用来对日期和星期字段做互斥的。
基于以上结论就可以解释下列情况:
1、当星期和日期都为*或数字时,报错
Support for specifying both a day-of-week AND a day-of-month parameter is not implemented.
即两个字段不能都指明的特定的值,必须互斥。这里的*和数字是一样的,如果都指明特定的数字,也是报一样的错。
2、当星期和日期都为?时,报错
'?' can only be specfied for Day-of-Month -OR- Day-of-Week.
即两个字段不能都‘没有特定的值’。
这个是Spring的实现,没有什么道理,Spring就是规定这两个字段必须这样互斥的设置。
这与UNIX的crontab设置不一样,crontab的规则是日期和星期中只要满足一个就触发,所以不存在互斥的问题。
转自:http://blog.csdn.net/chh_jiang/article/details/4603529
分享到:
相关推荐
cronExpression ,的关于时间的配置
spring-boot-quartz-demo, 使用Quartz框架的样例 Spring Boot 应用程序 spring-boot-quartz-demo使用Quartz框架的样例 Spring Boot 应用程序基于 https://gist.github.com/jelies/5085593 附加功能( 断点,失火处理...
本项目来源与网络,本人对项目...直接通过mvn 倒入项目,在Spring-quartz-demo\src\main\webapp\sql 有sql 建立数据库,表 启动tomcat 直接访问http://localhost:8080/Spring-quartz-demo/task/taskList.htm 就可以使用
spring-quartz的标准配置文件
spring整合quartz动态定时任务demo-spring-quartz-demo
spring-quartz简单实例 简单的quartz定时任务实例代码
spring-boot-quartz定时任务
Spring-quartz实现定时器(含代码)
本案例实现的功能是SpringBoot整合Quartz定时任务框架,实现在项目运行过程中自动执行工作任务,设定时间是每20秒执行一次。
spring-quartz定时任务的小实例,可运行的项目+说明
spring-quartz所需所有jar包--版本都是测试过的
java运行依赖jar包
Quartz Scheduler的Spring-Boot自动配置只是Quartz Scheduler的Spring-Boot启动器。 当然,Quartz Scheduler已经有好几个启动器,但是它们都不能满足我的所有需求,因此我创建了自己的启动器。 这只是一个业余项目。...
spring-boot-2.1.3.RELEASE.jar -autoconfigure- -devtools- -maven-plugin- -starter- -starter-jdbc- -starter-json- -starter-logging- -starter-test- -starter-tomcat- -starter-web- -test- -test-...
一个完整的Spring-quartz定时器 实现的示例
NULL 博文链接:https://laotu5i0.iteye.com/blog/691129
NULL 博文链接:https://ait.iteye.com/blog/1981617
针对于spring集成quartz配置进行详细说明,并提供部分简单示例说明配置。
Spring Quartz定时任务所需要的6个jar包,找到6个可是不容易哦。commons-logging-1.2.jar,commons-logging-1.2.jar,jta.jar,quartz-1.6.6.jar,commons-collections-3.2.jar,spring.jar
quartz1.8.6 slf4j-api slf4j-log4j12 log4j-18 common-logging-1.1.jar spring 3.0的所有jar包