【发布时间】:2026-01-30 02:35:01
【问题描述】:
我有一个使用 Spring 的 @Scheduled 注释和从属性文件加载的 cron 表达式调度的方法,如 this 文章中所述。包含此计划方法的应用程序作为 .war 文件部署在 Tomcat 应用程序服务器上。
这可以正常工作,并且计划的方法按照属性文件中给出的 cron 表达式按预期运行。
我的问题是,如果我想在方法执行时进行更改,并且我修改了属性文件中的 cron 表达式,是否需要重新部署应用程序才能使更改生效?
【问题讨论】:
-
您无需重新部署应用程序。您可以只更新属性文件中的 cron 表达式并重新启动应用程序。在下一次运行中,新的 cron 表达式将用于调度。
-
“重新启动”应用程序是什么意思?它是一个不包含 main 方法的 war 文件,使用 @Scheduled 注释的方法仅通过 Spring 调度程序运行。你的意思是重新启动Tomcat应用服务器?
-
对不起,我应该告诉重新启动服务器(Tomcat Web 服务器)。最佳实践是始终将属性文件保留在您的 war 文件之外,以便更轻松地更新属性。如果您有义务将属性文件保留在 war 文件中,则以分解格式部署 war 文件。这样您仍然可以直接更新属性,而无需生成新的战争。
标签: java spring tomcat cron war