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 jobParameters
는 key=value
형태로 여러개 쭉 지정한다.아래 사용하지 말 것. SpringBoot와 SpringBatch 참조
botJar
를 변경해주면 된다.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