如何在 groovy 中使用 Spring 表达式语言 (SpEL)? (根据 spring 调度程序 crontab)

How to use Spring Expression Language (SpEL) in groovy? (Per spring scheduler crontab)

问题

如何在 groovy spring 引导项目中定义 Spring 表达式语言 (SpEL)? (根据 spring 调度程序 crontab @scheduled 注释)

Spring 引导 Groovy 和 Spring EL 调度程序

根据来自网络的文档,我在 groovy spring 启动应用程序 (2. 2.x)

据此post:Task scheduling using cron expression from properties file

试过这个

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

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

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

但出现此错误:

属性 'cron' 的类型应为 'java.lang.String';但在@org.springframework.scheduling.annotation.Scheduled

中找到类型 'java.lang.Object'

分析

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

问题

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

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

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

Inject @Scheduled fixedRate value from Spring Boot application.yml file

没错。尝试转义 Groovy $ 运算符(例如 $)。因此,它在编译后作为常规符号出现 Java 。所以Spring最后就能解析出属性:

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