関数で @Scheduled アノテーションを使用しているとします。しかし、プロパティファイルでプロパティが定義されている場合にのみ、その注釈を有効にしたいと思います。そのシナリオをどのように構成しますか? ユースケース: 同じアプリが複数のサーバーにデプロイされていますが、@Scheduled は 1 つのサーバーでのみアクティブにする必要があります。
1 に答える
0
私の考え:
- @Schedule でアノテーションが付けられたメソッドのみを含む追加の Bean (MyScheduler) を使用します。このメソッドは、呼び出しを実際のサービスに「転送」します。
- 次に、 @Component と @Profile で MyScheduler クラスにアノテーションを付けます
- プロパティ ファイルを使用して、このプロファイルを有効または無効にします
スケッチ:
@Component
@Profile("onTHEserver")
public class MyScheduler{
@Autowire
private RealService realService;
@Schedule(cron="1****") {
realService.doSomething();
}
}
- @See: Spring 3.1 M1: @Profile の紹介
- @See: @Profile Java Doc
于 2013-07-31T18:35:46.370 に答える