在spring Boot 中,我可以通过不对方法使用@Scheduled
注解来调度spring作业吗?
我在spring Boot 中使用spring job。我想使用cron表达式来调度一个作业,但是不使用@Scheduled(cron = " ")
注解。
我知道我可以在这个方法中安排一个作业,如下所示。
@Scheduled (cron = "0 10 10 10 * ?")
public void execute() {
/ * some job code * /
}
但是我希望它是动态的,这样我就可以将cron表达式作为用户的输入并对其进行调度。
3条答案
按热度按时间ki1q1bka1#
自从我发现你的问题很有趣,并且以前对这个问题很感兴趣,我就想出了一个工作示例。它完全基于源代码,所以我不知道它是否接近最佳实践。尽管如此,您可能能够根据您的需要调整它。仅供参考,您不一定需要创建一个新的ScheduledTaskRegistrar对象-我认为,由于您的目标是动态调度程序,您不会对纯粹在overwritted方法中定义任务感兴趣。
我有在Azure和其他地方使用cron作业的经验。在Java编程中,我通常使用固定时间的
@Scheduled
只是为了简单起见。希望这对你有用。toiithl62#
下面是我的工作示例,如果有人想使用TaskScheduler而不使用@Scheduled Annotation
@Configuration 类
从应用程序类调用的调度程序类。
如果
@Configuration
注解不起作用,请将@EnableConfigurationProperties
放在主运行类中。确保将@EnableScheduling
放在Application
类中,这样主可运行类看起来会像juzqafwq3#
这个答案类似于前面的两个答案,但是更加简洁,因为它利用了应用程序上下文中已经提供的调度注册器:
服务返回的每个WorkflowTrigger都有自己的cron计划,因此允许动态注册编译时未知的计划任务。