JobRepository와 PlatformTransactionManager는 필요에 따라 데이터 소스를 사용할 수 있다.
Config 설정
@EnableBatchProcessing// 스프링부트 배치 스타터에 미리 정의된 설정들을 실행시키는 어노테이션으로 JobBuilder, StepBuilder 등 다양한 설정 주입@ConfigurationpublicclassTestJobConfig {// Job 실행에 필요한 JobLauncher를 필드값으로 갖는 JobLauncherTestUtils를 빈으로 등록 @BeanpublicJobLauncherTestUtilsjobLauncherTestUtils(){returnnewJobLauncherTestUtils(); }}
DefaultBatchConfiguerer
만약 커스텀이 필요한 경우 DefaultBatchConfiguerer을 상속받아 필요한 설정만 재정의 하여 사용할 수 있다. 예를 들어, 여러 개의 DB에 접근하고 싶어 DataSource를 여러개 설정해야하는 경우이다.
Spring Batch가 수행될 때, arguments로 job.name이 넘어오면 해당 값과 일치하는 Job만 수행시킬 수 있다.
${job.name:NONE} 의 의미는 job.name이 있으면 job.name을 할당하고, 없으면 NONE을 할당하겠다는 의미이다. 여기서 NONE이 spring.batch.job.names 에 할당되면 어떠한 배치도 실행하지 않겠다는 의미이며, 혹시라도 값이 없는 경우에 모든 배치가 수행되지 않도록 막는 역할을 한다.
--job.name=stepNextJob
위 program arguments를 추가하고 수행하면 해당 name의 Job만 실행 되는 것을 확인할 수 있다.
Job: [SimpleJob: [name=stepNextJob]] launched with the following parameters: [{version=2}]
2021-01-31 19:43:59.202 INFO 20321 --- [ main] o.s.batch.core.job.SimpleStepHandler : Executing step: [step1]
2021-01-31 19:43:59.221 INFO 20321 --- [ main] s.b.p.jobs.StepNextJobConfiguration : >>> this is step1
2021-01-31 19:43:59.237 INFO 20321 --- [ main] o.s.batch.core.step.AbstractStep : Step: [step1] executed in 33ms
2021-01-31 19:43:59.303 INFO 20321 --- [ main] o.s.batch.core.job.SimpleStepHandler : Executing step: [step2]
2021-01-31 19:43:59.315 INFO 20321 --- [ main] s.b.p.jobs.StepNextJobConfiguration : >>> this is step2
2021-01-31 19:43:59.323 INFO 20321 --- [ main] o.s.batch.core.step.AbstractStep : Step: [step2] executed in 19ms
2021-01-31 19:43:59.353 INFO 20321 --- [ main] o.s.batch.core.job.SimpleStepHandler : Executing step: [step3]
2021-01-31 19:43:59.372 INFO 20321 --- [ main] s.b.p.jobs.StepNextJobConfiguration : >>> this is step3
2021-01-31 19:43:59.385 INFO 20321 --- [ main] o.s.batch.core.step.AbstractStep : Step: [step3] executed in 32ms
2021-01-31 19:43:59.402 INFO 20321 --- [ main] o.s.b.c.l.support.SimpleJobLauncher : Job: [SimpleJob: [name=stepNextJob]] completed with the following parameters: [{version=2}] and the following status: [COMPLETED] in 258ms