1

假设我在函数上使用 @Scheduled 注释。但我希望该注释仅在属性文件中定义某些属性时才生效。我们如何配置该场景?用例:同一个应用程序部署在多台服务器上,但 @Scheduled 应该只在一台服务器上处于活动状态。

4

1 回答 1

0

我的想法:

  • 使用一个额外的 bean (MyScheduler),它只包含一个用 @Schedule 注释的方法。此方法将调用“转发”到您的真实服务。
  • 然后用@Component 和@Profile 注释MyScheduler 类
  • 使用您的属性文件来启用或禁用此配置文件

草图:

 @Component
 @Profile("onTHEserver")
 public class MyScheduler{

   @Autowire
   private RealService realService;

   @Schedule(cron="1****") {
       realService.doSomething();
   }
 }
于 2013-07-31T18:35:46.370 回答