【发布时间】:2020-08-29 05:45:23
【问题描述】:
我一直在尝试将@Scheduled 的 cron 属性设置如下。
public class ObjectScheduler {
@Value("${config.cron.expression}")
private static final CRON_EXPRESSION;
@Scheduled(cron = CRON_EXPRESSION, zone="GMT")
public void scheduledObjectFetch() {...}
}
我在这里遇到编译时错误
The value for the annotation attribute Scheduled.cron attribute must be a constant expression.
如果我直接在属性中给出表达式,同样的事情会起作用
@Scheduled(cron = "${config.cron.expression}", zone="GMT")
这里的值也是在运行时从配置中分配的,所以为什么这里没有给出编译时错误?为什么当我使用 @Value 注释将它分配给变量时,它不认为它是一个常量表达式?有什么我想念的吗?是因为Java还是Spring的@Value注解?
【问题讨论】:
标签: java spring cron spring-scheduled