사용자 도구

사이트 도구


springframework:batch:commandlinejobrunner

Spring Batch Command Line Job Runner

java org.springframework.batch.core.launch.support.CommandLineJobRunner jobPath <options> jobIdentifier (jobParameters)
 
# example
java org.springframework.batch.core.launch.support.CommandLineJobRunner testJob.xml testJob schedule.date=2008/01/24 vendor.id=3902483920
  • jobPath : XML 파일 경로 혹은 Java Config class FQCN 둘 다 지원. javadoc 에는 XML만 지원하는 것 처럼 나왔지만 config class도 지원
  • jobIdentifier : job name
  • jobParameterskey=value 형태로 여러개 쭉 지정한다.

SpringBoot 와 연동

아래 사용하지 말 것. SpringBoot와 SpringBatch 참조


bootJar {
    mainClassName = 'org.springframework.batch.core.launch.support.CommandLineJobRunner'
}

Spring batch Job이 자동시작되는 것을 막고 명시적 실행만 되게 하려면 다음 설정이 application.yml에 필요하다.

spring:
  batch:
    job:
      enabled: false

이제 Java Config 파일에 Job을 @Configuration@EnableBatchProcessing이 필요하다. 생성해준다.

@Configuration
@EnableBatchProcessing
public class SpringBatchConfig {
 
    Logger logger = LoggerFactory.getLogger(SpringBatchConfig.class);
 
    @Autowired
    public JobBuilderFactory jobBuilderFactory;
 
    @Autowired
    public StepBuilderFactory stepBuilderFactory;
 
    @Bean
    public Job job1() {
        return jobBuilderFactory.get("job1")
                .incrementer(new RunIdIncrementer())
                .start(step1()).build();
    }
 
    private TaskletStep step1() {
        Tasklet tasklet = (contribution, context) -> {
            logger.info("This is from tasklet step with parameter ->"
                    + context.getStepContext().getJobParameters().get("message"));
            return RepeatStatus.FINISHED;
        };
        return stepBuilderFactory.get("step1").tasklet(tasklet).build();
    }
}

이제 gradlew build 로 생성된 통합 jar 파일을 직접 실행하는 방식으로 처리 가능해진다.

java -jar build/libs/example-0.0.1-SNAPSHOT.jar com.example.config.SpringBatchConfig \
    jobName message=hi
springframework/batch/commandlinejobrunner.txt · 마지막으로 수정됨: 2018/07/24 17:57 저자 kwon37xi