모르지 않다는 것은 아는것과 다르다.

Spring Batch 16

JobExecutionListener

JobExecutionListener 스프링 배치에서 전 처리, 후 처리를 하기 위해 사용된다. 2가지의 구현 방식이 있다. interface 구현 @Annotation 정의 JobExecutionListener를 interface 형식으로 구현하면 아래와 같다. public static class SavePersonJobExecutionListener implements JobExecutionListener{ // job 실행전에 호출 @Override public void beforeJob(JobExecution jobExecution) { log.info("beforeJob"); } // Job 실행 후에 호 @Override public void afterJob(JobExecution jobExe..

Spring Batch 2022.02.27

ItemWriter

ItemWriter interface ItemWriter는 마지막으로 배치 처리 대상 데이터를 어떻게 처리할 지 결정한다. DB에 데이터를 저장하거나, API로 서버에 요청하거나, 파일에 데이터를 write하거나 최종적으로 할 작업을 진행한다. Step에서 ItemWriter는 필수이다. csvItemWriter private ItemWriter csvItemWriter() throws Exception { BeanWrapperFieldExtractor fieldExtractor = new BeanWrapperFieldExtractor(); fieldExtractor.setNames(new String[] {"id", "name", "age", "address"}); DelimitedLineAggrega..

Spring Batch 2022.02.27

ItemProcessor

ItemProcessor ItemWriter에 데이터를 보낼지 말지를 결정함 ItemReader에서 null을 리턴하면 chunk처리가 끝났다는 의미 ItemProcessor에서 null을 리턴하면 ItemWriter에서 해당 item을 처리하지 않겠다는 의미 ItemProcessor는 필수는 아니지만, 책임 분리를 위해 사용하는 것이 좋다. 구현은 아래와 같이 할 수 있다. @Service public class PlayerSalaryService { public PlayerSalaryDto calcSalary(PlayerDto player) { int salary = (Year.now().getValue() - player.getBirthYear()) * 1000000; return PlayerSal..

Spring Batch 2022.02.27

Tasklet, Chunk 비교

Tasklet, Chunk 비교 Tasklet을 사용한 Task 기반 처리 Chunk보다 코딩하기 쉽다. 배치 처리 과정이 비교적 쉬운 경우 사용한다. 대량 처리를 하는 경우에는 더 복잡하다. 하나의 큰 덩어리를 여러 덩어리로 나누어 처리하기에는 부적합하다. Chunk를 사용한 chunk(덩어리) 기반 처리 ItemReader, ItemProcessor, ItemWriter의 관계를 이해할 필요가 있다. 대량 처리를 하는 경우 Tasklet 보다 비교적 쉽게 구현할 수 있다. Ex> 10000개의 데이터를 1000개씩 10개의 덩어리로 나누어 실행 @JobScope, @StepScope @Scope는 어떤 시점에 bean을 생성/소멸 시킬지 bean의 lifecycle을 설정할 수 있다. @JobScop..

Spring Batch 2022.02.27

Spring Batch

batch란? 큰 단위의 작업을 일괄 처리 대용량 처리량이 많고 비 실시간성 처리에 사용 대용량 데이터 계산, 정산, 통계, 데이터베이스, 변환 등 컴퓨터 자원을 최대로 활용 컴퓨터 자원 사용이 낮은 시간대에 배치를 처리하거나 배치만 처리하기 위해 사용자가 사용하지 않는 또다른 컴퓨터 자원을 사용 사용자 상호작용으로 실행되기 보단, 스케줄러와 같은 시스템에 의해 실행되는 대상 crontab, jenkins 등을 이용해서 주기적으로 실행할 수 있다. 배치 프로그램은 보이진 않지만 늘 존재한다. 서비스를 운영하는 관점에서 주기적으로 작업을 처리하려면 배치 프로그램을 사용해야 한다. batch 가 필요한 상황 필요한 데이터를 모아서 처리해야 할 때 ex. 월별 거래 명세서 생성 일부러 지연시켜 처리할 때 ex..

Spring Batch 2022.02.27