15

SpringBatchアプリケーションがあります。これは。で始まりCommandLineJobRunnerます。しかし今、私はこのアプリケーションを私たちの企業環境に組み込む必要があります。そこに私が使用しなければならない独自のランチャーアプリケーションがあります。このランチャーアプリケーションには、起動時に呼び出され、SpringBatchを起動する必要があるmainメソッドを持つスタートアップクラスが必要です。

を手動で割り当てJobLauncherてこのランチャーでジョブを実行する唯一の方法ですか、それともそれをサポートする(または誰かがサンプルを知っている)Spring Batchのクラスがありますか?

4

3 に答える 3

15

CommandLineRunnerを使用したくない場合(何らかの理由で、またはカスタムロジックが必要な場合)、Spring Bootアプリケーションを使用すると、いつでも次のようなことができます。

public static void main(String[] args) {

    SpringApplication app = new SpringApplication(YourApplication.class);
    app.setWebEnvironment(false);
    ConfigurableApplicationContext ctx = app.run(args);

    JobLauncher jobLauncher = ctx.getBean(JobLauncher.class);
    Job job = ctx.getBean("your-job-here", Job.class);
    JobParameters jobParameters = new JobParametersBuilder().toJobParameters();


    JobExecution jobExecution = jobLauncher.run(job, jobParameters);
    BatchStatus batchStatus = jobExecution.getStatus();
}
于 2016-05-02T16:28:51.177 に答える
12

はい、プログラムでジョブを起動できます。のソースに表示されている場合CommandLineJobRunner、mainメソッドはSpringコンテキストを作成し、ランチャーを使用してジョブを実行するだけです。したがって、新しいアプリケーションでこれを行うことができます。

于 2011-05-10T14:24:45.150 に答える
6

JobLauncherを使用して、プログラムでジョブを呼び出すことができます。Webアプリケーションからジョブをトリガーする方法を探している場合は、サーブレット/コントローラーでJobLauncherを自動配線できます。

http://docs.spring.io/spring-batch/reference/htmlsingle/#runningJobsFromWebContainer

于 2011-05-25T07:08:52.570 に答える