전체 글

전체 글

    [Spring Batch] 이벤트 리스너 내용 정리

    Spring Batch 이벤트 리스너 내용 정리 Listener는 배치 흐름 중에 Job, Step, Chunk 단계의 실행 전후에 발생하는 이벤트를 받아 용도에 맞게 활용할 수 있도록 제공하는 인터셉터 개념의 클래스 이벤트를 받기 위해 Listener를 등록해야 하며 등록은 API 설정에서 각 단계별로 지정 가능하다. Job JobExecutionListener - Job 실행 전 후 Step StepExecutionListener - Step 실행 전 후 ChunkListener - Chunk 실행 전 후 (Tasklet 실행 전 후), 오류 시점 ItemReadListener - ItemReader 실행 전 후, 오류 시점, item이 null 일 경우 호출 안됨 ItemProcessListener..

    [Spring Batch] Multi Thread Processing 내용 정리

    Spring Batch Multi Thread Processing 내용 정리 AsyncItemProcessor, AsyncItemWriter Step 안에서 ItemProcessor가 비동기적으로 동작하는 구조 AsyncItemProcessor와 AsyncItemWriter가 함께 구성이 되어야 함 AsyncItemProcessor로 부터 AsyncItemWriter가 받는 최종 결과값은 List 타입이며 비동기 실행이 완료될 때까지 대기한다 spring-batch-integration 의존성 필요 public Step step() throws Exception { return stepBuilderFactory.get("step") .chunk(100) .reader(pagingItemReader()) ..

    [Spring] Spring Data MongoDB 잊어버리는 것들 정리

    Spring Data MongoDB 잊어버리는 것들 정리 기본적으로 CrudRepository 를 사용 core conecept로 CrudRepository 를 사용한다. 하위 계층에 일반적으로 사용하는 MongoRepository 가 존재한다. ref. https://docs.spring.io/spring-data/mongodb/docs/current/reference/html/#repositories.core-concepts data jpa와 다르게 생성 시에 컬렉션 생성이 되지 않는다 data jpa에서 spring.jpa.hibernate.ddl-auto 옵션으로 create 과 같은 옵션을 주어 어플리케이션 생성 시에 테이블을 생성하고는 했는데, data mongodb 에서는 따로 컬렉션 생성 ..

    [Spring Batch] @JobScope, @StepScope 에 대해

    Spring Batch @JobScope, @StepScope 에 대해 스프링 빈에 scope 가 있는 것 처럼 Job과 Step에도 빈 생성과 관련한 scope이다. 해당 스코프가 선언되면 빈 생성이 어플리케이션 구동시점이 아니라 빈의 실행시점에 이루어지게 된다. @Values를 주입해서 빈의 실행 시점에 값을 참조할 수 있어 지연 로딩이 가능해진다. @Value("#{jobParameters[파라미터명]}") 와 같이 표현식 언어를 런타임 시점에 주입받을 수 있다. @Values를 사용시에 반드시 빈 선언문에 @JobScope, @StepScope 정의가 필요하다. 프록시 모드를 기본으로 잡고있는 스코프이기 때문에 어플리케이션이 구동될 때에 해당 빈의 프록시 객체가 생성되어 실행 시점에 실제 빈을 호..

    [Spring Batch] 도메인 정리

    BatchAutoConfiguration 스프링 배치가 초기화 될 때 자동으로 실행되는 설정 클래스 Job을 수행하는 JobLauncherApplicationRunner 빈을 생성 SimpleBatchConfiguration JobBuilderFactory와 StepBuilderFactory 생성 스프링 배치의 주요 구성 요소 생성 - 프록시 객체로 생성됨 BatchConfigurerConfiguration BasicBatchConfigurer SimpleBatchConfiguration에서 생성한 프록시 객체의 실제 대상 객체를 생성하는 설정 클래스 빈으로 의존성 주입 받아서 주요 객체들을 참조해서 사용할 수 있다 JpaBatchConfigurer JPA 관련 객체를 생성하는 설정 클래스 @Enable..

    [Spring Batch] 반복 및 오류 제어 내용 정리

    Spring Batch 반복 및 오류 제어 내용 정리 Repeat Spring Batch는 특정 조건이 충족 될 때 까지(또는 반대) Job 또는 Step을 반복하도록 배치 어플리케이션을 구성 할 수 있다. Step의 반복과 Chunk 반복을 RepeatOperation을 사용해서 처리하고 있다. 기본 구현체로 RepeatTemplate을 제공한다. Job -> Step -> ( RepeatTemplate -> Tasklet -> ( RepeatTemplate -> Chunk) 반복 )반복 Tasklet은 이제 Chunk 사용 시에 ChunkOrientedTasklet 를 사용하게 되는데 이곳의 ChunkProvider 가 RepeatTemplate 을 가지고 ItemReader 에서 데이터를 읽어오는 ..

    [Spring Batch] Chunk 내용 정리

    Spring Batch Chunk 내용 정리 Chunk Chunk란 여러 개의 아이템을 묶은 하나의 덩어리 블록을 의미 한 번에 하나씩 아이템을 입력 받아 Chunk 단위의 덩어리로 만든 후 Chunk 단위로 트랜잭션을 처리함. 즉, Chunk 단위의 Commit과 Rollback이 이루어짐 일반적으로 대용량 데이터를 한 번에 처리하는 것이 아닌 청크 단위로 쪼개어서 더 이상 처리할 데이터가 없을 때 까지 반복해서 입출력하는데 사용됨 Chunk vs Chunk Chunk는 ItemReader로 읽은 하나의 아이템을 Chunk에서 정한 개수만큼 반복해서 저장하는 타입 Chunk는 ItemReader로부터 전달받은 Chunk를 참조해서 ItemProcessor에서 적절하게 가공, 필터링한 다음 ItemWri..

    [Spring] @JsonView에 대해

    @JsonView에 대해 public class Member { private String name; private int age; private String importantInformation; } 다음과 같은 Member 클래스에 중요한 정보가 있고 특정 api 요청에 대해서 노출이 되면 안된다고 할 때, @JsonView 를 이용하는 방법이 있다. public class AccessLevel { public static class Normal { } public static class Secret extends Normal { } } --------------------------------------------------------------------- public class Member { ..