최근 실패한 Batch Parameter가 어떤 것들이 있고, 성공한 Job은 어떤 것들인지
다시 실행한다면 어디서 부터 시작할지
어떤 Job에 어떤 Step이 있고, Step들 중 성공한 Step과 실패한 Step들은 어떤 것들이 있는지
Spring Batch Meta-Data ERD
기본적으로 H2 DB를 사용할 경우에는 해당 테이블을 Boot가 실행될때 자동으로 생성해주지만, MySQL, Oracle과 같은 DB는 개발자가 직접 생성해주어야 한다. 해당 sql문을 차례대로 실행해주면 된다.
image-20210124205536134
MySql, H2 Database 연결하기
pom.xml
application.yml
image-20210124224911352
Active profiles에 설정한 값이 spring-profiles 값이다. 다음과 같이 설정 후 실행해주면 mysql이 기본 DB로 실행되는 것을 볼 수 있다.
지정한 Batch Job만 실행하기
Spring Batch가 수행될 때, arguments로 job.name이 넘어오면 해당 값과 일치하는 Job만 수행시킬 수 있다.
${job.name:NONE} 의 의미는 job.name이 있으면 job.name을 할당하고, 없으면 NONE을 할당하겠다는 의미이다. 여기서 NONE이 spring.batch.job.names 에 할당되면 어떠한 배치도 실행하지 않겠다는 의미이며, 혹시라도 값이 없는 경우에 모든 배치가 수행되지 않도록 막는 역할을 한다.
image-20210131194226674
위 program arguments를 추가하고 수행하면 해당 name의 Job만 실행 되는 것을 확인할 수 있다.
@EnableBatchProcessing // 스프링부트 배치 스타터에 미리 정의된 설정들을 실행시키는 어노테이션으로 JobBuilder, StepBuilder 등 다양한 설정 주입
@Configuration
public class TestJobConfig {
// Job 실행에 필요한 JobLauncher를 필드값으로 갖는 JobLauncherTestUtils를 빈으로 등록
@Bean
public JobLauncherTestUtils jobLauncherTestUtils(){
return new JobLauncherTestUtils();
}
}
@Configuration
public class DatabaseConfig {
@Bean
@Primary
public DataSource dataSource()
{
return .........;
}
}
@Configuration
@EnableBatchProcessing
@ComponentScan(basePackageClasses = DefaultBatchConfigurer.class)
public class MyBatchConfig {
}