首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用带有spring @调度表达式的参数

使用带有spring @调度表达式的参数
EN

Stack Overflow用户
提问于 2020-08-05 16:00:42
回答 1查看 1.7K关注 0票数 0

我正在尝试对当前用于Spring @调度表达式的cron表达式进行参数化。来自客户端配置的所有其他变量似乎都为其他变量正确加载,但是Spring似乎无法在cron表达式中找到任何内容。

我尝试过各种不同的方法,但似乎都没有用。抛出的错误

代码语言:javascript
复制
java.lang.IllegalStateException: Encountered invalid @Scheduled method 'importData': Could not resolve placeholder 'cronExpression' in value "${cronExpression}"

我尝试直接从配置文件调用表达式

代码语言:javascript
复制
@Scheduled(cron = "${my.cron.expression}")
    public void importData() {

使用@限定符并给它直接的字符串名

代码语言:javascript
复制
@Qualifier("cronExpression") String cronExpression
this.cronExpression = cronExpression
...
@Scheduled(cron = "${cronExpression}")
    public void importData() {

但这些仍然返回上述错误消息。

在client类中,我目前正在尝试导入如下变量:

代码语言:javascript
复制
    @Bean
    @Qualifier("cronExpression")
    public String cronExpression(@Value("${my.cron.expression}") String cronExpression) {
        return cronExpression;
    }

除了名称之外,这是我使用的代码,它仍然抛出一个未解决的占位符错误: Properties:

代码语言:javascript
复制
my:
  cron:
    expression: 0 0 4-6 * * *

ClientConfig:

代码语言:javascript
复制
    @Qualifier("cronExpression")
    public String cronExpression(@Value("${my.cron.expression}") String cronExpression) {
        return cronExpression;
    }

调度程序:

代码语言:javascript
复制
private final String cronExpression;
...
@Qualifier("cronExpression") String cronExpression
...
this.cronExpression = cronExpression
...
@Scheduled(cron = "${cronExpression}")
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-06 09:37:16

这里是我的Spring类:

代码语言:javascript
复制
@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配置文件:

代码语言:javascript
复制
my.cron.expression: 0 */1 * * * ?

使用此配置,我的日志每分钟都会被触发。

(我没有添加特定的依赖项)

备注

小心您的属性的字符串包装:如果给了您一个错误,请尝试取消引用 it。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63269075

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档