我正在尝试对当前用于Spring @调度表达式的cron表达式进行参数化。来自客户端配置的所有其他变量似乎都为其他变量正确加载,但是Spring似乎无法在cron表达式中找到任何内容。
我尝试过各种不同的方法,但似乎都没有用。抛出的错误
java.lang.IllegalStateException: Encountered invalid @Scheduled method 'importData': Could not resolve placeholder 'cronExpression' in value "${cronExpression}"我尝试直接从配置文件调用表达式
@Scheduled(cron = "${my.cron.expression}")
public void importData() {使用@限定符并给它直接的字符串名
@Qualifier("cronExpression") String cronExpression
this.cronExpression = cronExpression
...
@Scheduled(cron = "${cronExpression}")
public void importData() {但这些仍然返回上述错误消息。
在client类中,我目前正在尝试导入如下变量:
@Bean
@Qualifier("cronExpression")
public String cronExpression(@Value("${my.cron.expression}") String cronExpression) {
return cronExpression;
}除了名称之外,这是我使用的代码,它仍然抛出一个未解决的占位符错误: Properties:
my:
cron:
expression: 0 0 4-6 * * *ClientConfig:
@Qualifier("cronExpression")
public String cronExpression(@Value("${my.cron.expression}") String cronExpression) {
return cronExpression;
}调度程序:
private final String cronExpression;
...
@Qualifier("cronExpression") String cronExpression
...
this.cronExpression = cronExpression
...
@Scheduled(cron = "${cronExpression}")发布于 2020-08-06 09:37:16
这里是我的Spring类:
@EnableScheduling
@SpringBootApplication
@Slf4j
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
@Scheduled(cron = "${my.cron.expression}")
public void test(){
log.info("hello!");
}
}下面是我的application.yml配置文件:
my.cron.expression: 0 */1 * * * ?使用此配置,我的日志每分钟都会被触发。
(我没有添加特定的依赖项)
备注
小心您的属性的字符串包装:如果给了您一个错误,请尝试取消引用 it。
https://stackoverflow.com/questions/63269075
复制相似问题