#11 spring batch: jobParameter, jobExecution

This commit is contained in:
haerong22
2022-06-02 00:03:36 +09:00
parent 41dea3f4d0
commit 33ba7cf823
4 changed files with 152 additions and 1 deletions

View File

@@ -0,0 +1,57 @@
package io.springbatch.basic.job.jobexecution;
import lombok.RequiredArgsConstructor;
import org.springframework.batch.core.Job;
import org.springframework.batch.core.JobParameters;
import org.springframework.batch.core.Step;
import org.springframework.batch.core.configuration.annotation.JobBuilderFactory;
import org.springframework.batch.core.configuration.annotation.StepBuilderFactory;
import org.springframework.batch.repeat.RepeatStatus;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.Map;
@Configuration
@RequiredArgsConstructor
public class JobExecutionConfiguration {
private final JobBuilderFactory jobBuilderFactory;
private final StepBuilderFactory stepBuilderFactory;
@Bean
public Job job() {
return jobBuilderFactory.get("job")
.start(step1())
.next(step2())
.build();
}
@Bean
public Step step1() {
return stepBuilderFactory.get("step1")
.tasklet((contribution, chunkContext) -> {
System.out.println("step1 was executed");
return RepeatStatus.FINISHED;
})
.build();
}
@Bean
public Step step2() {
return stepBuilderFactory.get("step2")
.tasklet((contribution, chunkContext) -> {
System.out.println("step2 was executed");
/*
jobExecution 은 jobInstance 에 대한 한 번의 시도를 의미
BATCH_JOB_EXECUTION 테이블에 실행 정보가 저장
만약 실행 도중 에러가 발생하면 STATUS 가 FAILED 로 저장되고
같은 jobInstance 라도 상태가 COMPLETED 가 없다면 계속 생성
*/
// throw new RuntimeException("step2 has failed");
return RepeatStatus.FINISHED;
})
.build();
}
}

View File

@@ -0,0 +1,59 @@
package io.springbatch.basic.job.jobparameter;
import lombok.RequiredArgsConstructor;
import org.springframework.batch.core.Job;
import org.springframework.batch.core.JobParameters;
import org.springframework.batch.core.Step;
import org.springframework.batch.core.configuration.annotation.JobBuilderFactory;
import org.springframework.batch.core.configuration.annotation.StepBuilderFactory;
import org.springframework.batch.repeat.RepeatStatus;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.Map;
//@Configuration
@RequiredArgsConstructor
public class JobParameterConfiguration {
private final JobBuilderFactory jobBuilderFactory;
private final StepBuilderFactory stepBuilderFactory;
@Bean
public Job job() {
return jobBuilderFactory.get("job")
.start(step1())
.next(step2())
.build();
}
@Bean
public Step step1() {
return stepBuilderFactory.get("step1")
.tasklet((contribution, chunkContext) -> {
// jobParameter 값은 contribution, chunkContext 에서 사용 가능
JobParameters jobParameters = contribution.getStepExecution().getJobExecution().getJobParameters();
jobParameters.getString("name");
jobParameters.getLong("seq");
jobParameters.getDate("date");
jobParameters.getDouble("age");
Map<String, Object> jobParameters1 = chunkContext.getStepContext().getJobParameters();
System.out.println("jobParameters1 = " + jobParameters1);
System.out.println("step1 was executed");
return RepeatStatus.FINISHED;
})
.build();
}
@Bean
public Step step2() {
return stepBuilderFactory.get("step2")
.tasklet((contribution, chunkContext) -> {
System.out.println("step2 was executed");
return RepeatStatus.FINISHED;
})
.build();
}
}

View File

@@ -0,0 +1,35 @@
package io.springbatch.basic.job.jobparameter;
import lombok.RequiredArgsConstructor;
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.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;
import java.util.Date;
//@Component
@RequiredArgsConstructor
public class JobParameterTest implements ApplicationRunner {
private final JobLauncher jobLauncher;
private final Job job;
@Override
public void run(ApplicationArguments args) throws Exception {
/*
ParameterType : date, string, long, double
*/
JobParameters jobParameters = new JobParametersBuilder()
.addString("name", "user1")
.addLong("seq", 2L)
.addDate("date", new Date())
.addDouble("age", 16.5)
.toJobParameters();
jobLauncher.run(job, jobParameters);
}
}

View File

@@ -34,4 +34,4 @@ spring:
jdbc:
initialize-schema: always
job:
enabled: false
enabled: true