HelloWorldJob 구성하기
스프링 배치를 통해서 간단한 HelloWorldJob을 구성해 보자.
의존성 추가
- batch, mysql 의존성을 추가한다.
- 참고로, mysql외에 local에서 인메모리DB를 통해서 이용하고 HSQLDB를 사용할 수 있다.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-batch</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.23</version>
</dependency>
DB connection 설정
application.properties 파일에 mysql datasource connection정보를 설정한다.
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/spring_batch
spring.datasource.username=root
spring.datasource.password=password
spring.batch.jdbc.initialize-schema=always
- spring batch는 Job의 상태를 관리해서, Job이 실패했을때 그 지점부터 다시 실행이 가능하도록 되어있다.
- 그렇기 때문에 Job의 상태와, 파라미터값들에 대한 정보들이 spring batch table에 저장이 된다.
- spring.batch.jdbc.initialize-schema=always 옵션을 통해서, DB schema에 validation체크를 한다.
- 초기에 schema 를 생성한다.
@EnableBatchProcessing 추가
@SpringBootApplication
@EnableBatchProcessing //spring batch 인프라스트럭처 구성
public class SpringBatchExampleApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBatchExampleApplication.class, args);
}
}
@EnableBatchProcession어노테이션을 추가한다.- 해당 어노테이션은 spring batch 모듈 인프라 스트럭쳐를 구성한다.
- 한가지 예로, JobLauncher를 통해서 Job이 실행되는데, @EnableBatchProcession 어노테이션을 달아주면, JobLauncher인터페이스로 SimpleJobLauncher 구현체로 만들어진다.
간단한 HelloWorldJob 구성해보기
@Component
public class HelloWorldJob {
@Autowired
private JobBuilderFactory jobBuilderFactory;
@Autowired
private StepBuilderFactory stepBuilderFactory;
@Bean
public Job job() {
return this.jobBuilderFactory.get("basicjob")
.start(step1())
.build();
}
@Bean
private Step step1() {
return this.stepBuilderFactory.get("step1")
.tasklet((stepContribution, chunkContext) -> {
System.out.println("hello world");
return RepeatStatus.FINISHED;
})
.build();
}
- jobBuilderFactory와 stepBuilderFactory는 빈으로 주입받아서 사용한다.
- jobBuilderFactory, stepBuilderFacotry 의 get() 메서드를 통해서 Job과 Step의 이름을 정한다.
- Job과 Step(1:N)의 관계로 구성가능하다.
- step은 tasklet 기반과 chunck 기반으로 나눌수 있다.
- 예제에서는 taskelt을 람다식을 통해서 구현했다. .
- RepeatStatus.FINISHED를 통해서 해당 Step을 종료한다.
'개발 > spring-batch' 카테고리의 다른 글
| [spring-batch] 잡 파라미터 (0) | 2021.09.24 |
|---|---|
| [spring-batch] Job 소개하기 (0) | 2021.09.24 |
| [spring-batch] 스프링 배치 아키텍쳐 (0) | 2021.09.24 |