3 回答
TA贡献1805条经验 获得超10个赞
您是正确的,注释@Scheduled
不允许您动态读取延迟参数。出于这个原因,并且因为此注释仅以毫秒为单位接受延迟参数或作为对用户不友好的 crone 表达式,我编写了自己的实用程序来执行此操作。该实用程序作为开源 MgntUtils 库的一部分提供。您将需要编写将扩展库中提供的类的类,然后您将获得所需的功能。但这确实需要一些工作。然而,该库带有示例包,其中包含工作示例的源代码,并在 javadoc 中进行了详细说明。如果您有兴趣,可以在Github和Maven Central找到库. 在这两个地方都可以使用源代码和 javadoc。javadoc 中详细描述了所需的功能。如果您将 javadoc 下载并解压到文件夹 c:\tmp 中,请查看 URL file:///C:/tmp/javadoc/com/mgnt/lifecycle/management/backgroundrunner/package-summary.html以获取有关如何使用的详细说明此功能。对于工作代码示例,请查看 package 的源代码com.mgnt.lifecycle.management.backgroundrunner.example
TA贡献1890条经验 获得超9个赞
您可以run()使用@EventListener或创建一个新的此类带注释的方法来注释您的方法,该方法将调用run():
@EventListener
public void handleContextRefresh(ContextRefreshedEvent event) {
run();
}
如果你不使用支持refresh()操作的上下文,你应该没问题。如果您使用这样的上下文(并且您不想run()在上下文刷新时执行),请确保将此状态存储在您的 bean 中。
添加回答
举报