SpringBatchの起動方法

SpringBatchの起動方法

Spring Batchを起動する方法にはいくつかの方法があります。
以下に、Spring Batchの基本的な起動手順を説明します。

1. SpringBootを使用する場合

SpringBootを使用すると、Spring Batchの設定と起動が簡単になります。
以下の手順でSpringBootアプリケーションを使用してSpring Batchジョブを起動できます。

ステップ1: 依存関係の追加

pom.xml(Mavenの場合)またはbuild.gradle(Gradleの場合)にSpring Batchの依存関係を追加します。

Mavenの場合

<dependencies>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-batch</artifactId>
  </dependency>
  <!-- 他の依存関係 -->
</dependencies>

Gradleの場合

dependencies {
  implementation 'org.springframework.boot:spring-boot-starter-batch'
  // 他の依存関係
}
ステップ2: ジョブの定義

@Configurationクラスを作成し、JobやStepを定義します。
以下に基本的な例を示します。

import org.springframework.batch.core.Job;
import org.springframework.batch.core.Step;
import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing;
import org.springframework.batch.core.configuration.annotation.JobBuilderFactory;
import org.springframework.batch.core.configuration.annotation.StepBuilderFactory;
import org.springframework.batch.core.job.builder.JobBuilder;
import org.springframework.batch.core.step.builder.StepBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
@EnableBatchProcessing
public class BatchConfiguration {

  @Bean
  public Job job(JobBuilderFactory jobBuilderFactory, StepBuilderFactory stepBuilderFactory) {
    return jobBuilderFactory.get("job")
        .start(step(stepBuilderFactory))
        .build();
  }

  @Bean
  public Step step(StepBuilderFactory stepBuilderFactory) {
    return stepBuilderFactory.get("step")
        .tasklet((contribution, chunkContext) -> {
          System.out.println("Hello, Spring Batch!");
          return RepeatStatus.FINISHED;
        })
        .build();
  }
}
ステップ3: アプリケーションクラスの作成

@SpringBootApplicationを使用して、SpringBootアプリケーションを起動します。

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class BatchApplication {

  public static void main(String[] args) {
    SpringApplication.run(BatchApplication.class, args);
  }
}
ステップ4: 実行

アプリケーションを実行することで、SpringBootがSpring Batchジョブを自動的に起動します。
コマンドラインで次のように実行できます。

mvn spring-boot:run

または、IDEから直接実行することもできます。

2. Spring Batchのコマンドライン起動

Spring Batchのジョブをコマンドラインから起動することもできます。
この場合、JobLauncherとJobを使用します。

ステップ1: ジョブランチャーの作成
import org.springframework.batch.core.Job;
import org.springframework.batch.core.JobParameters;
import org.springframework.batch.core.JobParametersBuilder;
import org.springframework.batch.core.launch.JobLauncher;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
public class JobRunner {

  @Autowired
  private JobLauncher jobLauncher;

  @Autowired
  private Job job;

  public void run() throws Exception {
    JobParameters params = new JobParametersBuilder()
        .addString("param", "value")
        .toJobParameters();
    jobLauncher.run(job, params);
  }
}
ステップ2: 実行

コマンドラインやバッチファイルを使用して、上記のJobRunnerクラスのrunメソッドを呼び出します。

まとめ

Spring Batchの起動方法は、SpringBootを使う方法とコマンドラインで直接起動する方法があります。
SpringBootを使用することで、設定が簡単になり、起動がスムーズになりますが、より詳細な制御が必要な場合は、コマンドラインでの起動も検討できます。