Spring Batch
  • Cursor 방식 JDBC ResultSet의 기본 메커니즘을 사용한다. 현재 행에 커서를 유지하며 다음 데이터를 호출하면 다음 행으로 커서를 이동하며 데이터 반환이 이루어진다. (Streaming 방식) ResultSet이 open()될 때마다 next()가 호출되어 Database의 데이터가 반환되고 객체와 매핑이 이루어진다. DB Connection이 연결되면 배치 처리가 완료될 때까지 데이터를 읽어오기 때문에 DB와 SocketTimeout을 충분한 값으로 설정해야한다. 모든 결과를 메모리에 할당하므로 메모리 사용량이 많다. Connection 연결 유지 시간과 메모리 공간이 충분하다면 대량의 데이터 처리에 적합할 수 있다. JdbcCursorItemReader Cursor 기반의 JDBC 구현체..

    Read more
  • Xml 파일 읽어오기 resources/item51/customer.xml 1 hong gil dong1 40 2 hong gil dong2 42 3 hong gil dong3 43 Customer.java package com.project.springbatch._52_reader_json; import lombok.AllArgsConstructor; import lombok.Data; @Data @AllArgsConstructor public class Customer { private final long id; private final String name; private final int age; } build.gradle implementation 'org.springframework:sprin..

    Read more
  • Job 생성 FlatFileConfiguration.java package com.project.springbatch._47_reader_FlatFiles; import lombok.RequiredArgsConstructor; import org.springframework.batch.core.Job; import org.springframework.batch.core.Step; import org.springframework.batch.core.configuration.annotation.JobBuilderFactory; import org.springframework.batch.core.configuration.annotation.StepBuilderFactory; import org.springfr..

    Read more
  • Job 생성 ItemStreamConfiguration.java package com.project.springbatch._41_itemStream; import com.project.springbatch._41_itemStream.custom.CustomItemStreamReader; import com.project.springbatch._41_itemStream.custom.CustomItemStreamWriter; import lombok.RequiredArgsConstructor; import org.springframework.batch.core.Job; import org.springframework.batch.core.Step; import org.springframework.batch.c..

    Read more
  • Job 생성 ItemConfiguration.java import com.project.springbatch._40_item.custom.CustomItemProcessor; import com.project.springbatch._40_item.custom.CustomItemReader; import com.project.springbatch._40_item.custom.CustomItemWriter; import com.project.springbatch._40_item.custom.Customer; import lombok.RequiredArgsConstructor; import org.springframework.batch.core.Job; import org.springframework.batc..

    Read more
  • 1번째 Job 생성 ChunkConfiguration.java import lombok.RequiredArgsConstructor; import org.springframework.batch.core.Job; import org.springframework.batch.core.Step; import org.springframework.batch.core.StepContribution; import org.springframework.batch.core.configuration.annotation.JobBuilderFactory; import org.springframework.batch.core.configuration.annotation.StepBuilderFactory; import org.sprin..

    Read more
  • Job 생성 JobExecutionDeciderConfiguration.java import lombok.RequiredArgsConstructor; import org.springframework.batch.core.Job; import org.springframework.batch.core.Step; import org.springframework.batch.core.StepContribution; import org.springframework.batch.core.configuration.annotation.JobBuilderFactory; import org.springframework.batch.core.configuration.annotation.StepBuilderFactory; import..

    Read more
  • Job 생성 CustomExitStatusConfiguration.java import lombok.RequiredArgsConstructor; import org.springframework.batch.core.ExitStatus; import org.springframework.batch.core.Job; import org.springframework.batch.core.Step; import org.springframework.batch.core.StepContribution; import org.springframework.batch.core.configuration.annotation.JobBuilderFactory; import org.springframework.batch.core.conf..

    Read more
  • Job 생성 import lombok.RequiredArgsConstructor; import org.springframework.batch.core.Job; import org.springframework.batch.core.Step; import org.springframework.batch.core.StepContribution; import org.springframework.batch.core.configuration.annotation.JobBuilderFactory; import org.springframework.batch.core.configuration.annotation.StepBuilderFactory; import org.springframework.batch.core.job.bu..

    Read more
  • Job 생성 import lombok.RequiredArgsConstructor; import org.springframework.batch.core.Job; import org.springframework.batch.core.Step; import org.springframework.batch.core.StepContribution; import org.springframework.batch.core.configuration.annotation.JobBuilderFactory; import org.springframework.batch.core.configuration.annotation.StepBuilderFactory; import org.springframework.batch.core.scope...

    Read more
  • Job 생성 import lombok.RequiredArgsConstructor; import org.springframework.batch.core.*; import org.springframework.batch.core.configuration.annotation.JobBuilderFactory; import org.springframework.batch.core.configuration.annotation.StepBuilderFactory; import org.springframework.batch.core.launch.JobLauncher; import org.springframework.batch.core.scope.context.ChunkContext; import org.springframe..

    Read more
  • 재실행에 포함시키기 - allowStartIfCompleted(true) @Bean public Step limitAllowStepStep1() { return stepBuilderFactory.get("limitAllowStepStep1") .tasklet(new Tasklet() { @Override public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) throws Exception { System.out.println("limitAllowStepStep1"); return RepeatStatus.FINISHED; } }) .allowStartIfComplete(true) // COMPLETED 되도 ..

    Read more
  • 해당 포스팅의 결론 여러개의 Tasklet을 선언할 경우 마지막에 선언된 Tasklet이 수행된다. @Bean public Step onlyTaskletStep2() { return stepBuilderFactory.get("onlyTaskletStep2") .tasklet(new Tasklet() { @Override public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) throws Exception { System.out.println("실행되면 안되요"); return RepeatStatus.FINISHED; } }) .tasklet(new OnlyTasklet()) // 여러개 불가능, 마지막 ta..

    Read more
  • incrementer() 사용 이유를 알아보자. Job 생성 package com.project.springbatch._20_incrementer; import lombok.RequiredArgsConstructor; import org.springframework.batch.core.Job; import org.springframework.batch.core.Step; import org.springframework.batch.core.StepContribution; import org.springframework.batch.core.configuration.annotation.JobBuilderFactory; import org.springframework.batch.core.configuration..

    Read more
  • preventRestart() 1) 선언하지 않는 경우 - true @Bean public Job preventRestartJob() { return this.jobBuilderFactory.get("preventRestartJob") /* step start */ .start(preventRestartStep1()) .next(preventRestartStep2()) .build(); } 2) 선언하는 경우 - false @Bean public Job preventRestartJob() { return this.jobBuilderFactory.get("preventRestartJob") /* step start */ .start(preventRestartStep1()) .next(preventResta..

    Read more
  • Copyright 2024. GRAVITY all rights reserved