我知道有一个重复这里,这可能正是我的情况下,虽然它会值得一些更好的解释,我会尝试在这里提供.
我使用Spring应用程序上下文使用Java Web应用程序.在这种情况下,我使用Quartz定义了预定作业.这些作业由.properties文件中定义的cron触发.
Spring上下文嵌入在war中,而.properties文件位于应用程序服务器上(在这种特殊情况下为Tomcat).
这很好,允许根据环境(开发,集成,生产......)定义不同的crons.
现在,在我自己的计算机上本地运行此应用程序时,我不希望执行这些作业.有没有办法写一个永远不会触发的cron表达式?
我使用Spring Framework的@Scheduled注释创建了一个简单的计划任务.
@Scheduled(fixedRate = 2000)
public void doSomething() {}
Run Code Online (Sandbox Code Playgroud)
现在我想在不再需要时停止这项任务.
我知道在这个方法的开头可以有一个替代方法来检查一个条件标志,但是这不会停止执行这个方法.
Spring提供什么来阻止@Scheduled任务?
如何在Spring Boot IntegrationTest上禁用计划自动启动?
谢谢.
我正在调查以固定速率使用@Scheduled的情况,在某些可配置的情况下,不应运行计划的作业。
该文档没有提及这一点,而是分别针对fixedDelay()和fixedDelayString()是-1和的默认值""。可以使用这些方法可靠地确保计划的方法不会触发吗?