Batch๋ ์ผ๊ด์ฒ๋ฆฌ๋ฅผ ์๋ฏธํ๋ค.
batch application์ ๋ค์์ ๋ง์กฑํ์ฌ์ผ ํ๋ค.
batch๋ Job
์ ์งํฉ์ด๋ค.
Job
์ Step
์ ์งํฉStep
์ ItemReader
+ ItemProcessor
+ ItemWriter
๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.ItemRearder
: batch data๋ฅผ ์ฝ์ด์ค๋ ์ธํฐํ์ด์ค. (DB, file, xml ๋ฑ)ItemProcessor
: ์ฝ์ด์จ data๋ฅผ ๊ฐ๊ณต/์ฒ๋ฆฌItemWriter
: ๊ฐ๊ณต/์ฒ๋ฆฌํ ๋ฐ์ดํฐ๋ฅผ DB, file ๋ฑ์ ์ ์ฅSpring-boot batch๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ ๋ฉํ ๋ฐ์ดํฐ ํ ์ด๋ธ์ด ํ์ํ๋ค.
h2์ ๊ฐ์ ์ธ๋ฉ๋ชจ๋ฆฌ db๋ฅผ ์ฌ์ฉํ๋ฉด spring-boot์ด ํ
์ด๋ธ๋ค์ ์๋์ผ๋ก ์์ฑํด์ค๋ค
๋ณธ ๋ฌธ์์์๋ h2๋ฅผ ์ฌ์ฉํ์ฌ Batch๋ฅผ ์คํํ๋ค.
build.gradle
์ ๋ค์์ ์ถ๊ฐํ๋ค.
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-batch'
implementation 'com.h2database:h2'
}
org.springframework.boot:spring-boot-starter-batch
com.h2database:h2
DemoApplication.java
์์ @EnableBatchProcessing
์ ์ถ๊ฐํ๋ค.@EnableBatchProcessing
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
@EnableBatchProcessing
job
ํด๋๋ฅผ ๋ง๋ ๋ค.SimpleJobConfiguration.java
๋ฅผ ๋ง๋ ๋ค.@Slf4j
@RequiredArgsConstructor
@Configuration
public class SimpleJobConfiguration {
private final JobBuilderFactory jobBuilderFactory;
private final StepBuilderFactory stepBuilderFactory;
@Bean
public Job simpleJob() {
return jobBuilderFactory.get("simpleJob")
.start(simpleStep1())
.build();
}
@Bean
public Step simpleStep1() {
return stepBuilderFactory.get("simpleStep1")
.tasklet((contribution, chunkContext) -> {
log.info(">>>>> This is Step1");
return RepeatStatus.FINISHED;
})
.build();
}
}
@Slf4j
@RequiredArgsConstructor
@Configuration
@Configuration
์ผ๋ก ๋ฑ๋กํด์ ์ฌ์ฉํ๋ค.jobBuilderFactory.get("simpleJob")
stepBuilderFactory.get("simpleStep1")
tasklet()
# ๋น๋
./gradlew build
# Spring-boot ์คํ
java -jar ./build/lib/*.jar
job์ด ์คํ๋๋ ๋ก๊ทธ๋ฅผ ํ์ธํ ์ ์๋ค.
๋ชจ๋ ์์ค๋ ๊นํ๋ธ์ ์ฌ๋ ค๋์๋ค.
์ฐธ๊ณ ๋งํฌ: jojoldu ๋ธ๋ก๊ทธ