2016-04-04 8 views
4

私のアプリケーションは、プロパティファイルからいくつかのcronパターンを読み込みます。イムは、このような@Scheduled注釈使用:Cronスケジューラ "パターンを無効にする"

@Scheduled(cron = "${config.cronExpression:0 0 11,23 * * *}")

を今、私はいくつかのタスクを無効にすると、最も簡単な解決策は、cronのパターンウィッヒが実行されることはありません入力することであろう。 これを行うために、過去の特定の日にのみ実行するcron式の使用について考えました。 しかし残念ながら、Springのcron式では過去に年または日付を追加することはできません。

決して実行されないパターンはありますか?

+1

これが役立つかどうかわかりませんが、私はlocalyがcron-expression 'none'をうまく使用していることを知っています。しかし、これはハックかもしれません...他の人は、2月31日、または2099年12月31日を使用することをお勧めします... http://stackoverflow.com/questions/8324306/cron-job-that-will-never-execute http:// stackoverflow.com/questions/13835221/quartz-cron-expression-that-will-never-execute/13938099#13938099 – samjaf

答えて

0

SpringBootでは、スケジュールされたジョブを無効にするためのSpring Beanメソッドで@Profileを使用します。

@Service 
public class ... { 

    @Profile("prod") 
    @Scheduled(cron="${scheduler.cron}") 
    public void yourJob() { 
     // ... job enabled only for PROD environment 
    } 

} 

https://jira.spring.io/browse/SPR-10376を参照してください。

+0

これは正常ですか? [documentation](https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/context/annotation/Profile.html)は、 '@ Profile'は' @ Beanの方法。私はまだそれを試す時間がなかった。 – eztam

+0

はい、 '@ Profile'を使用するということは、Spring Bean、つまり' @ Service'、 '@ Component'で使用することを意味します。 –

関連する問題