1

関数で @Scheduled アノテーションを使用しているとします。しかし、プロパティファイルでプロパティが定義されている場合にのみ、その注釈を有効にしたいと思います。そのシナリオをどのように構成しますか? ユースケース: 同じアプリが複数のサーバーにデプロイされていますが、@Scheduled は 1 つのサーバーでのみアクティブにする必要があります。

4

1 に答える 1

0

私の考え:

  • @Schedule でアノテーションが付けられたメソッドのみを含む追加の Bean (MyScheduler) を使用します。このメソッドは、呼び出しを実際のサービスに「転送」します。
  • 次に、 @Component と @Profile で MyScheduler クラスにアノテーションを付けます
  • プロパティ ファイルを使用して、このプロファイルを有効または無効にします

スケッチ:

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

   @Autowire
   private RealService realService;

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