0

问题

如何在 groovy spring boot 项目中定义 Spring Expression Language (SpEL)?(每个 spring 调度程序 crontab @scheduled 注释)

Spring Boot Groovy 和 Spring EL 调度程序

根据网络上的文档,我在我的groovy spring boot 应用程序(2.2.x)中使用 spring 调度程序

根据这篇文章:使用属性文件中的 cron 表达式进行任务调度

试过这个

我尝试如下定义我的 cron 表达式:

@Scheduled(cron = "${appConfig.defaultCron}")

@Scheduled(cron = "#{appConfig.defaultCron}")

但得到这个错误:

属性“cron”应具有类型“java.lang.String”;但在@org.springframework.scheduling.annotation.Scheduled 中找到了“java.lang.Object”类型

分析

似乎弹簧'cron cruncher'将“$ {xxx}”视为Gstring而不是字符串

问题

如何让 SpringEL 在 groovy spring boot 项目的 cron 定义中工作?

参考 https://www.baeldung.com/spring-scheduled-tasks

https://www.baeldung.com/spring-expression-language

从 Spring Boot application.yml 文件中注入 @Scheduled fixedRate 值

4

1 回答 1

2

正确的。尝试逃避那个 Groovy$运算符(像这样\$)。因此,它在作为常规符号编译后涉及 Java。因此 Spring 最终将能够解决该属性:

@Scheduled(cron = "\${appConfig.defaultCron}")
于 2019-11-15T15:12:00.233 回答