이번 블로그 포스트에서는 Maven을 이용하여 자바 스프링 배치를 구현하는 방법에 대해 알아보겠습니다.
배치 프로젝트 생성하기
먼저, Maven을 이용하여 새로운 스프링 배치 프로젝트를 생성합니다. 아래의 명령어를 사용하여 Maven 프로젝트를 생성할 수 있습니다.
mvn archetype:generate -DgroupId=com.example.batch -DartifactId=batch-demo -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
위 명령어를 실행하면, com.example.batch
라는 groupId와 batch-demo
라는 artifactId를 가지는 Maven 프로젝트가 생성됩니다.
스프링 배치 의존성 추가하기
다음으로, 스프링 배치를 사용하기 위해 필요한 의존성을 Maven 프로젝트에 추가합니다. pom.xml
파일을 열고 <dependencies>
섹션에 다음 의존성을 추가합니다.
<dependencies>
<!-- Spring Batch -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-batch</artifactId>
</dependency>
</dependencies>
의존성을 추가하면 스프링 배치 관련 클래스와 라이브러리를 사용할 수 있게 됩니다.
배치 잡과 스텝 구현하기
이제 배치 잡과 스텝을 구현하는 코드를 작성해보겠습니다. 예를 들어, 간단한 데이터베이스 테이블에서 데이터를 읽어와서 파일로 저장하는 배치 작업을 구현해보겠습니다.
@EnableBatchProcessing
@SpringBootApplication
public class BatchDemoApplication {
public static void main(String[] args) {
SpringApplication.run(BatchDemoApplication.class, args);
}
@Bean
public ItemReader<SomeEntity> reader() {
// 데이터베이스에서 데이터를 읽어오는 Reader를 구현합니다.
return new JdbcCursorItemReaderBuilder<SomeEntity>()
.dataSource(dataSource)
.sql("SELECT * FROM some_table")
.rowMapper(new BeanPropertyRowMapper<>(SomeEntity.class))
.build();
}
@Bean
public ItemProcessor<SomeEntity, SomeEntity> processor() {
// 데이터에 대한 변환 로직을 구현하는 Processor를 구현합니다.
return new SomeEntityProcessor();
}
@Bean
public ItemWriter<SomeEntity> writer() {
// 데이터를 파일로 저장하는 Writer를 구현합니다.
return new FlatFileItemWriterBuilder<SomeEntity>()
.name("someEntityWriter")
.resource(new FileSystemResource("output.txt"))
.lineAggregator(new PassThroughLineAggregator<>())
.build();
}
@Bean
public Step someStep(ItemReader<SomeEntity> reader, ItemProcessor<SomeEntity, SomeEntity> processor, ItemWriter<SomeEntity> writer, StepBuilderFactory stepBuilderFactory) {
return stepBuilderFactory.get("someStep")
.<SomeEntity, SomeEntity>chunk(10)
.reader(reader)
.processor(processor)
.writer(writer)
.build();
}
@Bean
public Job someJob(JobBuilderFactory jobBuilderFactory, Step someStep) {
return jobBuilderFactory.get("someJob")
.incrementer(new RunIdIncrementer())
.flow(someStep)
.end()
.build();
}
}
위의 코드에서는 ItemReader
, ItemProcessor
, ItemWriter
를 구현하여 데이터를 읽고 처리한 뒤 파일로 저장합니다. SomeEntity
는 데이터베이스 테이블의 엔티티 클래스를 나타냅니다. 배치 작업의 각 단계는 Step
으로 구성되며, Job
은 Step
들을 연결하여 전체 작업 흐름을 구성합니다.
실행하기
이제 스프링 부트 애플리케이션을 실행하여 배치 작업을 수행해보겠습니다. 아래 명령어를 사용하여 애플리케이션을 실행합니다.
mvn spring-boot:run
애플리케이션이 실행된 후, 스프링 배치가 자동으로 작업을 수행합니다. 읽어온 데이터를 가공한 뒤 파일에 저장하는 과정이 진행됩니다.
마무리
이번 포스트에서는 Maven을 사용하여 자바 스프링 배치를 구현하는 방법을 알아보았습니다. Maven으로 프로젝트를 생성하고, 스프링 배치 의존성을 추가하고, 배치 잡과 스텝을 구현하는 방법을 살펴보았습니다.
더 자세한 내용은 Spring Batch 문서를 참조하시기 바랍니다.