Spring Batch

    10.Spring Batch의 Chunk와 ItemProcessor

    CompositeItemProcessor기본개념ItemProcessor 들을 연결(Chaining)해서 위임하면 각 ItemProcessor 를 실행시킨다예를 들자면 3개의 ItemProcessor가 있고 각 ItemProcessor에 작업중인 객체를 전달해줘야 하는 상황이라 가정해보자1번 ItemProcessor는 문자열 전체를 대문자로 바꿔준다.2번 ItemProcessor는 UUID를 문자열에 더해준다.3번 ItemProcessor는 A를 B로 바꿔주는 ItemProcessor이다.이럴 경우 각 ItemProcessore는 작업중인 문자열을 반환해줘야한다. CompositeItemProcessor는 작업중인 객체를 전달하여 동작할 ItemProcessor를 chaining 형식으로 구성한다.이전 I..

    9.Spring Batch의 Chunk와 ItemWriter

    Flat Files - FlatFileItemWriter 개념 및 API 소개기본개념2차원 데이터(표)로 표현된 유형의 파일을 처리하는 ItemWriter고정 위치로 정의된 데이터 필드나 특수 문자에 의해 구별된 데이터의 행을 기록한다Resource 와 LineAggregator 두 가지가 요소가 필요하다구조LineAggregatorItem 을 받아서 String 으로 변환하여 리턴한다item은 객체를 의미한다.FieldExtractor를 사용해서 처리할 수 있다구현체총 3개의 PassThroughLineAggregator, DelimitedLineAggregator, FormatterLineAggregator 구현체가 있다.FieldExtractor전달 받은 Item 객체의 필드를 배열로 만들고 배열을..

    8.Spring Batch의 Chunk와 ItemReader

    스프링 배치 청크 프로세스기본개념2차원 데이터(표)로 표현된 유형의 파일을 처리하는 ItemReader일반적으로 고정 위치로 정의된 데이터 필드나 특수 문자에 의해 구별된 데이터의 행을 읽는다Resource 와 LineMapper 두 가지 요소가 필요하다구조ResourceFileSystemResource – new FileSystemResource(“resource/path/config.xml”)ClassPathResource – new ClassPathResource(“classpath:path/config.xml)LineMapper파일의 라인 한줄을 Object 로 변환해서 FlatFileItemReader 로 리턴한다단순히 문자열을 받기 때문에 문자열을 토큰화해서 객체로 매핑하는 과정이 필요하다Li..

    7.Spring Batch의 Chunk와 동작원리 살펴보기

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

    6.Spring Batch의 Flow

    개요Flow는 이전 수업에서 배웠던 개념들이 Job과 Step보다 좀 더 유연하다.이번 단원에서 FlowJob, SimpleFlow, FlowStep에 대하여 학습해보자FlowJob 개념 및 API 소개1. 기본개념Step 을 순차적으로만 구성하는 것이 아닌 특정한 상태에 따라 흐름을 전환하도록 구성할 수 있으며 FlowJobBuilder 에 의해 생성된다Step 이 실패 하더라도 Job 은 실패로 끝나지 않도록 해야 하는 경우한 Job에서 연속적인 Step이 있을Step 이 성공 했을 때 다음에 실행해야 할 Step 을 구분해서 실행 해야 하는경우특정 Step은 전혀 실행되지 않게 구성 해야 하는 경우Flow 와 Job 의 흐름을 구성하는데만 관여하고 실제 비즈니스 로직은 Step 에서 이루어진다내부적..

    5.Spring Batch의 Step

    StepBuilderFactory1. StepBuilderFactoryStepBuilder 를 생성하는 팩토리 클래스로서 get(String name) 메서드 제공StepBuilderFactory.get(“stepName")“stepName” 으로 Step 을 생성2. StepBuilderStep을 구성하는 설정 조건에 따라 다섯 개의 하위 빌더 클래스를 생성하고 실제 Step 생성을 위임한다TaskletStepBuilderTaskletStep 을 생성하는 기본 빌더 클래스SimpleStepBuilderTaskletStep 을 생성하며 내부적으로 청크기반의 작업을 처리하는 ChunkOrientedTasklet 클래스를 생성한다PartitionStepBuilderPartitionStep 을 생성하며 멀티 ..

    4.Spring Batch의 Job

    목차배치 초기화 설정Job and StepJob and Flow@JobScope / @StepScope배치 초기화 설정이번 글에서는 Bean으로 등록된 Job들을 어떻게 실행할 지에 대해서 배운다.Job을 하나만 실행하는 경우도 있을것이고 2개..n개를 돌리는 경우도 있을것이다.이러한 설정을 application.properties or application.yml 파일에 설정해서 동작시켜보고 어떻게 돌아가는지 원리를 분석해보자.1.JobLauncherApplicationRunnerJobLauncherApplicationRunner는 Spring Batch 작업을 시작하는 ApplicationRunner 로서 BatchAutoConfiguration 에서 생성됨스프링 부트에서 제공하는 Applicatio..

    3.Spring Batch 도메인 이해하기

    Job1. 기본개념배치 계층 구조에서 가장 상위에 있는 개념으로서 하나의 배치작업 자체를 의미함“API 서버의 접속 로그 데이터를 통계 서버로 옮기는 배치“ 인 Job 자체를 의미한다.Job Configuration 을 통해 생성되는 객체 단위로서 배치작업을 어떻게 구성하고 실행할 것인지 전체적으로 설정하고 명세해 놓은 객체배치 Job 을 구성하기 위한 최상위 인터페이스이며 스프링 배치가 기본 구현체를 제공한다여러 Step 을 포함하고 있는 컨테이너로서 반드시 한개 이상의 Step으로 구성해야 함2. 기본 구현체SimpleJob순차적으로 Step 을 실행시키는 Job모든 Job에서 유용하게 사용할 수 있는 표준 기능을 갖고 있음FlowJob특정한 조건과 흐름에 따라 Step 을 구성하여 실행시키는 Job..

    2.Spring Batch 시작하기

    프로젝트 환경 설정배치의 환경 설정을 하는 방법은 2가지가 있다.Intelij를 활용한 프로젝트 구축Intelij - new(상단 막대바 위치) - Spring Initilalizer(좌측 상태바 위치)Spring Boot 기반 프로젝트를 생성하는 방법https://start.spring.io/ 이동 - dependency에서 Spring Batch 추가💡 일반 Spring Boot 프로젝트가 있으면 아래의 코드만 dependency에 추가해주자 org.springframework.boot spring-boot-starter-batch org.springframework.batch spring-b..

    1.Spring Batch 소개

    1.개요(Spring Batch는 왜 등장했는가)자바 기반의 표준 배치 기술이 존재하지 않기 때문에 등장했다.자바에는 Network, TCP, UDP, Thread 등 개발에 필요한 기본 기술들이 JSP(Java Specification Request)에 명시되어있다.하지만 배치와 관련된 기술은 JSR에 명시되어있지 않고 이것이 Spring Batch의 등장 배경이 되었다.그렇기 때문에 재사용 가능한 자바 기반 배치 아키텍쳐가 필요하게 되었다.그렇기에 Spring Batch가 등장하였다.Spring Batch는 SpringSource(현재는 Privotal)와 Accenture(경영 컨설팅기업) 두 기업의 합작품이다.Accenture-배치 아키텍쳐를 구현하면서 쌓은 기술적 경험 노하우를 보유한 회사Spr..