gpt4 book ai didi

java - 如何通过属性文件禁用@Scheduled 方法?

转载 作者:IT老高 更新时间:2023-10-28 13:46:57 25 4
gpt4 key购买 nike

我有一个定期运行的 Spring 计划方法:

@Scheduled(cron = "${spring.cron.expression}")
public void demonJob() { ... }

application.properties成功读取cron表达式:

spring.cron.expression=0 0 * * * *

现在,我想将我的应用程序部署到不应该运行此特定计划方法的特殊环境中。如果我像这样将 cron 属性留空...

spring.cron.expression=

...我得到以下异常:

Encountered invalid @Scheduled method 'demonJob': Cron expression must consist of 6 fields (found 0 in "")

如何优雅地禁用 Scheduled 方法,最好只在 application.properties 中提供不同的设置?

最佳答案

从 Spring 5.1.0 开始,特殊的 cron 值“-”可以与 @Scheduled 一起使用。注释以禁用 cron 触发器。

The special value "-" indicates a disabled cron trigger, primarily meant for externally specified values resolved by a ${...} placeholder.

对于您的具体示例,您只需将 spring.cron.expression 变量设置为该值。如果这是一个 Spring Boot 项目,您可以使用众多 externalized configuration options available 之一为此,包括:

  • 命令行参数
  • Java 系统属性
  • 操作系统环境变量
  • 专门用于该环境的配置文件的特定于配置文件的应用程序属性

如果这不是 Spring Boot 项目,您仍然可以指定此属性,尽管这样做的机制将不那么标准,而是更特定于项目。

关于java - 如何通过属性文件禁用@Scheduled 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34943466/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com