首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >*和?之间的区别?在Spring @Scheduled(cron=".....")

*和?之间的区别?在Spring @Scheduled(cron=".....")
EN

Stack Overflow用户
提问于 2015-05-20 13:35:39
回答 2查看 12.8K关注 0票数 31

我一直在研究用于调度任务(https://spring.io/guides/gs/scheduling-tasks/)和阅读一些文档(https://javahunter.wordpress.com/2011/05/05/cronscheduler-in-spring/)的Spring Boot示例,我看到了*和?几乎可以互换使用。

例如,这一行

代码语言:javascript
复制
@Scheduled(cron = "0 15 10 ? * *")

代码语言:javascript
复制
@Scheduled(cron = "0 15 10 * * ?")

做完全一样的事情。那么*和之间有什么区别呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-05-20 13:37:42

asterix代表所有可能的值。问号应用于非特定值

*(“所有值”)-用于选择字段中的所有值。例如,分钟字段中的"“表示*”每分钟“。

?(“无特定值”)-当您需要在允许字符的两个字段中的一个字段中指定内容,而不允许在另一个字段中指定字符时,此选项非常有用。例如,如果我希望触发器在一个月中的某一天(例如,10日)触发,但不关心恰好是一周中的哪一天,我会在日期字段中输入"10“和"?”在星期字段中。请参阅下面的示例以进行说明。

tutorial复制

票数 6
EN

Stack Overflow用户

发布于 2015-06-12 03:32:07

本教程已过时。符号?的意思是,与符号*完全相同。

从Spring版本3.1.2.RELEASE开始,调用层次结构如下:

  1. 构造函数CronTrigger(String)调用构造函数CronSequenceGenerator(String)
  2. CronSequenceGenerator(String)调用parse(String)
  3. parse(String)调用setDays(BitSet bits, String field, int max).

它的实现很清楚:

代码语言:javascript
复制
private void setDays(BitSet bits, String field, int max) {
    if (field.contains("?")) {
        field = "*";
    }
    setNumberHits(bits, field, 0, max);
}

所以,如果是?,那么就是*

票数 42
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30341067

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档