我一直在研究用于调度任务(https://spring.io/guides/gs/scheduling-tasks/)和阅读一些文档(https://javahunter.wordpress.com/2011/05/05/cronscheduler-in-spring/)的Spring Boot示例,我看到了*和?几乎可以互换使用。
例如,这一行
@Scheduled(cron = "0 15 10 ? * *")
和
@Scheduled(cron = "0 15 10 * * ?")
做完全一样的事情。那么*和之间有什么区别呢?
发布于 2015-05-20 13:37:42
asterix代表所有可能的值。问号应用于非特定值
*(“所有值”)-用于选择字段中的所有值。例如,分钟字段中的"“表示*”每分钟“。
?(“无特定值”)-当您需要在允许字符的两个字段中的一个字段中指定内容,而不允许在另一个字段中指定字符时,此选项非常有用。例如,如果我希望触发器在一个月中的某一天(例如,10日)触发,但不关心恰好是一周中的哪一天,我会在日期字段中输入"10“和"?”在星期字段中。请参阅下面的示例以进行说明。
从tutorial复制
发布于 2015-06-12 03:32:07
本教程已过时。符号?
的意思是,与符号*
完全相同。
从Spring版本3.1.2.RELEASE开始,调用层次结构如下:
CronTrigger(String)
调用构造函数CronSequenceGenerator(String)
CronSequenceGenerator(String)
调用parse(String)
parse(String)
调用setDays(BitSet bits, String field, int max)
.它的实现很清楚:
private void setDays(BitSet bits, String field, int max) {
if (field.contains("?")) {
field = "*";
}
setNumberHits(bits, field, 0, max);
}
所以,如果是?
,那么就是*
。
https://stackoverflow.com/questions/30341067
复制相似问题