我需要以固定的间隔运行批处理作业,并且能够在运行时更改此批处理作业的时间。为此,我遇到了Spring框架下提供的@Scheduled注释。但是我不确定如何在运行时更改fixedDelay的值。我进行了一些谷歌搜索,但没有发现任何有用的信息。
例如:
@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
方便地使用可见性,并以此方式使用它:
@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;
}
提供有关处理过程中发生的情况的一些信息。
问题内容: 我需要在运行时在应用程序中更改属性。例如,我有一项服务,该服务发送带有重置密码的电子邮件。要求有效期为12小时。但是我想在运行时将此时间更改为24或更多。我需要给管理员执行此操作的机会。 我的财产文件有 我的服务 我的Spring xml配置 我可以在运行时以某种方式更改此值吗? 问题答案: 只需远离xml配置,就快要到2017年了。 使用@Value,您将从属性文件中获取hours.
问题内容: 作为Java开发人员,我经常需要在接口的不同实现之间进行选择。有时, 一次 只能进行 一次 选择,而另一些时候,我需要不同的实现来响应程序收到的不同输入。换句话说,我需要能够在运行时 更改 实现。这可以通过一个帮助器对象轻松实现,该对象将一些键(基于用户输入)转换为对适当接口实现的引用。 使用Spring,我可以将这样的对象设计为Bean,然后将其注入到需要的地方: 现在,我应该如何实
如何在运行时更改application.yaml的值?例如,我有一个服务器地址属性,希望在运行时更改
问题内容: 我有一个Android应用程序,当用户点击时,我想应用定义的样式。 我以为找到一个,但它不存在。我试过了 但它不起作用。 问题答案: 我通过创建一个新的XML文件来做到这一点,如下所示: 我的文件中也有一个条目,如下所示: 然后,在我的代码中,我创建了一个来捕获该上的tap事件: 编辑: 自API 23起,不建议使用 要改回它,你可以使用以下命令:
我已经使用SLF4j作为日志框架,由log4j支持。我的问题是,我正在寻找一种在运行时更改记录器日志记录级别的方法。 我知道slf4j不允许通过自己的API直接进行此操作,因此,我必须直接访问日志提供程序。就个人而言,我发现这是slf4j中的一个巨大缺陷。所以现在我的问题是,如何通过slf4j以编程方式确定我使用的是哪种提供者?使用slf4j的最大目的是让您变得与提供商无关-您可以轻松地在您喜欢的