小编典典

Spring Boot @计划的cron

spring-boot

有没有一种方法可以在Spring的@Scheduled cron配置中从propertyClass调用getter(甚至是变量)?以下内容无法编译:

@Scheduled(cron = propertyClass.getCronProperty()) 要么 @Scheduled(cron = variable)

我想避免直接获取该属性:

@Scheduled(cron = "${cron.scheduling}")

阅读 301

收藏
2020-05-30

共1个答案

小编典典

简短的回答-开箱即用是不可能的。

@Scheduled注释中作为“
cron表达式”传递的值在ScheduledAnnotationBeanPostProcessor类中使用StringValueResolver接口的实例进行处理。

StringValueResolver有3种开箱即用的实现-用于Placeholder(例如$
{}),用于Embedded值和用于Static字符串-都无法实现您想要的结果。

如果您必须不惜一切代价避免在注释中使用属性占位符,请摆脱注释并以编程方式构造所有内容。您可以使用来注册任务ScheduledTaskRegistrar,这@Scheduled实际上是注释的作用。

我将建议使用能通过并通过测试的最简单的解决方案。

2020-05-30