[英]Difference between * and ? in Spring @Scheduled(cron=“…”)
我一直在查看用于调度任务的 Spring Boot 示例( https://spring.io/guides/gs/scheduling-tasks/ )并阅读一些文档( https://javahunter.wordpress.com/2011/05 /05/cronscheduler-in-spring/ ),我看到 * 和 ? 几乎可以互换使用。
例如,线
@Scheduled(cron = "0 15 10 ? * *")
和
@Scheduled(cron = "0 15 10 * * ?")
做完全相同的事情。 那么 * 和 之间有什么区别?
教程已经过时了。 符号?
表示与符号*
完全相同。
从 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);
}
那么,如果?
,然后*
。
星号代表所有可能的值。 问号应用于非特定值
*("all values") - 用于选择字段中的所有值。 例如,分钟字段中的“”表示*“每分钟”。
? (“无特定值”) - 当您需要在允许字符的两个字段之一中指定某些内容时很有用,而另一个字段则不允许。 例如,如果我希望我的触发器在一个月的某一天(比如 10 号)触发,但不关心那一天是一周中的哪一天,我会将“10”放在当天-month 字段和“?” 在星期字段中。 请参阅下面的示例以进行说明。
复制自教程
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.