如何在运行时更改Spring的@Scheduled fixedDelay

我需要以固定的间隔运行批处理作业,并且能够在运行时更改此批处理作业的时间。为此,我遇到了Spring框架下提供的@Scheduled注释。但是我不确定如何在运行时更改fixedDelay的值。我进行了一些谷歌搜索,但没有发现任何有用的信息。

回答:

在spring启动中,你可以直接使用应用程序属性!

例如:

@Scheduled(fixedDelayString = "${my.property.fixed.delay.seconds}000")

private void process() {

// your impl here

}

请注意,如果未定义属性,你还可以具有默认值,例如,默认值为“ 60”(秒):

@Scheduled(fixedDelayString = "${my.property.fixed.delay.seconds:60}000")

我发现的其他内容:

  • 该方法必须无效
  • 该方法必须没有参数
  • 该方法可能是 private

我发现可以private方便地使用可见性,并以此方式使用它:

@Service

public class MyService {

public void process() {

// do something

}

@Scheduled(fixedDelayString = "${my.poll.fixed.delay.seconds}000")

private void autoProcess() {

process();

}

}

作为private,计划的方法可以在你的服务本地使用,而不能成为服务API的一部分。

同样,这种方法允许process()方法返回一个值,而@Scheduled方法可能不会。例如,你的process()方法如下所示:

public ProcessResult process() {

// do something and collect information about what was done

return processResult;

}

提供有关处理过程中发生的情况的一些信息。

以上是 如何在运行时更改Spring的@Scheduled fixedDelay 的全部内容, 来源链接: utcz.com/qa/435566.html

回到顶部