2017-08-31 8 views
0

私は、特定の順序で実行する必要のある異なるジョブからなるスプリングバッチアプリケーションを作成しています。私はJobLauncherから手動でジョブを実行している、と私は私のプロパティで次のプロパティを追加することによって、春のバッチが提供するオートスタート機能を無効にすることを行うために をファイル:スプリングブート/バッチディスエーブルコードによるバッチ自動スタート

spring.batch.job.enabled=false 

私は無効にしたいと思いますこの機能は、誰でもアクセスして変更できる構成ファイルに頼るのではなく、コード内で直接実行できます。

これを行う方法はありますか?

+0

JavaConfigで試すことができます – Siddhesh

+0

Roger Thomasの[回答](https://stackoverflow.com/questions/29072628/how-to-override-spring-boot-application-properties-programmatically)は役に立ちますか?アイデアは、ハードコードされた値を常にコードに入れます。 –

+0

こんにちは@SabirKhan、あなたの返事をありがとう。これは動作していますが、プロパティファイルに明示的に "spring.batch.job.enabled = true"を設定することでバイパスできます。しかし何よりも良い。 –

答えて

0
@Bean 
@ConditionalOnMissingBean 
@ConditionalOnProperty(prefix = "spring.batch.job", name = "enabled", havingValue = "true", matchIfMissing = true) 
public JobLauncherCommandLineRunner jobLauncherCommandLineRunner(
     JobLauncher jobLauncher, JobExplorer jobExplorer) { 
    JobLauncherCommandLineRunner runner = new JobLauncherCommandLineRunner(
      jobLauncher, jobExplorer); 
    String jobNames = this.properties.getJob().getNames(); 
    if (StringUtils.hasText(jobNames)) { 
     runner.setJobNames(jobNames); 
    } 
    return runner; 
} 

これはBatchAutoConfigurationです。

これで判断すると、何もしないJobLauncherCommandLineRunnerの独自の実装を追加しようとすることができます。これは@ConditionalOnMissingBeanに影響し、実行しないでください。

関連する問題