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

Jor*_*dan 25 java cron spring scheduler scheduled-tasks

我一直在寻找春天引导例如调度任务(https://spring.io/guides/gs/scheduling-tasks/),并通过一些文档阅读(https://javahunter.wordpress.com/2011/05/05/cronscheduler-in-spring /)我看到*和?几乎可互换使用.

例如,该行

@Scheduled(cron = "0 15 10 ? * *")
Run Code Online (Sandbox Code Playgroud)

@Scheduled(cron = "0 15 10 * * ?")
Run Code Online (Sandbox Code Playgroud)

做同样的事情.那么*和?之间的区别是什么?

Luc*_*ein 29

该教程已过时.符号?是指恰好比相同*.从Spring 3.1.2.RELEASE开始,调用层次结构为:

构造函数CronTrigger(String)调用构造函数CronSequenceGenerator(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);
}
Run Code Online (Sandbox Code Playgroud)

那么,如果?,那么*.


Jen*_*ens 5

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

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

?(“无特定值”)-在需要在允许使用字符的两个字段之一中指定某个内容而在另一个不允许的字段中指定内容时很有用。例如,如果我希望触发器在每月的某个特定日期(例如,第10天)触发,但不在乎一周中的哪一天发生,我会在当天的“ 10”月字段和“?” 在星期几字段中。请参阅以下示例以进行澄清。

从本教程复制

  • 很抱歉,但没有:(。`?`与`*`/ sf / ask / 2123874721 /#30789834 **完全相同 (2认同)