Spring Boot @Scheduled cron

有没有办法在Spring的@Scheduled cron配置中从propertyClass调用getter(甚至是变量)? 以下不编译:

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

我想避免直接抓住财产:

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

简短的回答 - 这是不可能的。

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

StringValueResolver有3个开箱即用的实现 - 用于Placeholder (例如$ {}),用于Embedded值和用于Static字符串 - 其中没有一个可以实现您要查找的内容。

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

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


@Component
public class MyReminder {

    @Autowired
    private SomeService someService;

    @Scheduled(cron = "${my.cron.expression}")
    public void excecute(){
        someService.someMethod();
    }
}

在/src/main/resources/application.properties中

my.cron.expression = 0 30 9 * * ?
链接地址: http://www.djcxy.com/p/33007.html

上一篇: Spring Boot @Scheduled cron

下一篇: Youtube Data API v3 PlaylistItems update not working for Watch Later playlists