Spring Cron 调度程序“禁用模式”
Spring Cron scheduler “disable pattern”
我的应用程序从属性文件加载一些 cron 模式。我正在使用这样的 @Scheduled
注释:
@Scheduled(cron = "${config.cronExpression:0 0 11,23 * * *}")
现在我想禁用一些任务,最简单的解决方案是输入一个永远不会 运行 的 cron 模式。
为了做到这一点,我想到了使用只在过去特定日期执行的 cron 表达式。
但不幸的是,Spring cron 表达式不允许添加过去的年份或日期。
有没有永远不会运行的模式?
如果它是一个 cron 表达式(不是 spring 调度程序),您可以在下面使用它使 cron 运行 在 2099[=12] =]
59 59 23 31 12 ? 2099
但是 spring 调度程序不会将年份作为输入。这就是我发现可以将其推迟一段时间的原因。下面将 运行 2 月 29 日,这将是一个闰年。
0 0 0 29 2 ?
从 Spring 5.1.0 开始,@Scheduled
注释可以接受 "-"
作为 cron 表达式以禁用 cron 触发器。
根据 Javadocs:
The special value "-"
indicates a disabled cron trigger, primarily meant for externally specified values resolved by a ${...}
placeholder.
如果您遇到 Spring 5.1.0 之前的问题(SpringBoot < 2.1),您唯一的选择可能是使用 @Scheduled
禁用 bean/service方法,例如通过使用 @ConditionalOnProperty("my.scheduleproperty.active")
注释而不设置 属性(或将其设置为 false)
我的应用程序从属性文件加载一些 cron 模式。我正在使用这样的 @Scheduled
注释:
@Scheduled(cron = "${config.cronExpression:0 0 11,23 * * *}")
现在我想禁用一些任务,最简单的解决方案是输入一个永远不会 运行 的 cron 模式。 为了做到这一点,我想到了使用只在过去特定日期执行的 cron 表达式。 但不幸的是,Spring cron 表达式不允许添加过去的年份或日期。
有没有永远不会运行的模式?
如果它是一个 cron 表达式(不是 spring 调度程序),您可以在下面使用它使 cron 运行 在 2099[=12] =]
59 59 23 31 12 ? 2099
但是 spring 调度程序不会将年份作为输入。这就是我发现可以将其推迟一段时间的原因。下面将 运行 2 月 29 日,这将是一个闰年。
0 0 0 29 2 ?
从 Spring 5.1.0 开始,@Scheduled
注释可以接受 "-"
作为 cron 表达式以禁用 cron 触发器。
根据 Javadocs:
The special value
"-"
indicates a disabled cron trigger, primarily meant for externally specified values resolved by a${...}
placeholder.
如果您遇到 Spring 5.1.0 之前的问题(SpringBoot < 2.1),您唯一的选择可能是使用 @Scheduled
禁用 bean/service方法,例如通过使用 @ConditionalOnProperty("my.scheduleproperty.active")
注释而不设置 属性(或将其设置为 false)