如何在运行时更改Spring的@Scheduled修复Delay?
2022-08-31 22:19:46
我要求以固定的时间间隔运行批处理作业,并能够在运行时更改此批处理作业的时间。为此,我遇到了Spring框架下提供的注释。但我不确定如何在运行时更改固定延迟的值。我做了一些谷歌搜索,但没有找到任何有用的东西。@Scheduled
我要求以固定的时间间隔运行批处理作业,并能够在运行时更改此批处理作业的时间。为此,我遇到了Spring框架下提供的注释。但我不确定如何在运行时更改固定延迟的值。我做了一些谷歌搜索,但没有找到任何有用的东西。@Scheduled
在弹簧启动中,您可以直接使用应用程序属性!
例如:
@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();
}
}
作为,计划方法可以是服务的本地方法,而不是成为服务 API 的一部分。private
此外,此方法还允许方法返回一个值,而方法可能不返回该值。例如,您的方法可以如下所示:process()
@Scheduled
process()
public ProcessResult process() {
// do something and collect information about what was done
return processResult;
}
以提供有关处理过程中发生的情况的一些信息。