스프링 배치 반복 및 오류 제어
·
Spring
Repeat- 특정 조건이 충족될 때까지 Job또는 Step을 반복함- RepeatOperation을 사용해서 Step의 반복과 Chunk 반복을 함- 기본 구현체로 RepeatTemplate을 제공함 반복을 종료할 것인지 여부 결정 세 가지 항목RepeatStatus- 스프링 배치의 처리가 끝났는지 판별하기 위한 열거형 enum=> CONTINUABLE : 작업이 남아있음=> Finished : 더이상의 반복이 없음 CompletionPolicy - RepleatTemplatedml iterated 메소드 안에서의 반복을 중단할지 결정- 정상 종료를 알리는데에 사용함.- 실행 횟수 또는 완료시기, 오류 발생시 수행할 작업에 대한 반복여부 결정- 정상 종료를 알리는데 사용함.ExceptionHandler..
Spring Batch - ItemProcessor, ItemWriter
·
Spring
FlatFileItemWriter- 2차원으로 표현된 유형된 파일을 처리하는 ItemWriter LineAggregator - Item을 받아서 String으로 변환하여 리턴- FiledExtractor를 사용해서 처리함- 구현체=> PassThroughLineAggregator / DelimitedLineAggregator / FormatterLineAggregator FieldExtractor- 전달받은 Item 객체의 필드를 배열로 만들고, 배열을 합쳐서 문자열을 만들도록 구현하도록 제공하는 인터페이스- 구현체=> BeanWrapperFieldExtractor=> PassThroughFieldExtractor JsonFileItemWriter- 객체를 받아 JSON String으로 변환하는 역할을 ..
Spring Batch - ItemReader
·
Spring
FlatFileItemReader - DB가 아닌 Resource에서 데이터를 읽어올 수 있도록 구현된 구현체 - 2차원 데이터료 표현된 유형의 파일을 처리하는 ItemReader - Resource와 LineMapper 두 가지 요소가 필요함 Resource- FileSystemResource - new FileSystemResource("resource/path/config.xml")=> 파일 시스템에서 자원을 읽어올 때 사용- ClassPathResource - new ClassPathResource("classpath:path/config.xml")=> 클래스패스에서 자원을 읽어올 때 사용 LineMapper- 파일의 라인 한 줄을 Object로 변환해서 FlatFileItemReader로 리턴함..
Spring Batch - Chunk
·
Spring
Chunk- 여러 개의 아이템을 하나로 묶은 하나의 덩어리, 블록- 한번에 하나씩 아이템을 입력받아, chunk단위의 덩어리로 만든 후, 트랜잭션을 처리함. 즉 chunk단위의 commit과 rollback이 이루어짐 - 대용량 데이터를 한번에 처리하는게 아니라, 청크 단위로 쪼개어서 작업함 => 이렇게 청크 단위로 쪼개서 작업하는 이유는,1. 메모리 효율성 : 한꺼번에 너무 많은 데이터를 메모리에 올리면 메모리 부족 문제가 발생할 수 있음. 청크 단위로 적절한 양의 데이터를 읽어 메모리 사용량을 줄일 수 있음. 2. 트랜잭션 관리 : 부분적으로 처리하다가, 오류가 나면 롤백 처리 하는 등 일관성 유지 가능3. 쓰기 효율성 : ItemWriter에서는 청크를 모아서 한 번에 쓰기 작업을 처리하는데, 데이..
Spring Batch - Flow
·
Spring
Flow- Step이 특정한 상태에 따라 흐름을 전환하도록 구성할 수 있는 Job, FlowJobBuilder에 의해 생성됨- 내부적으로 SimpleFlow 객체를 포함하고 있으며, Job 실행시 호출함.   public Job batchJob() { return jobBuilderFactory.get("batchJob") .start(Flow) .next(Step or Flow or JobExcecuitonDecider) .on(String pattern) .to(Step) .stop() / fail() / end() / stopAndRestart() .end() .build();} - start(Flow) => 이처럼 ..
스프링 배치 - Job / Step
·
Spring
배치 초기화 설정JobLauncherApplicationRunner- 스프링 배치 작업을 시작하는 ApplicationRunner로서, BatchAutoConfiguration (Spring Boot 3.3.0 API)  에서 생성됨- ApplicationRunner의 구현체로, 어플리케이션이 정상적으로 구동되자마자 실행됨- 기본적으로 빈으로 등록된 모든 job을 실행시킴import org.springframework.batch.core.Job;import org.springframework.batch.core.JobParametersBuilder;import org.springframework.batch.core.launch.JobLauncher;import org.springframework.boot..
Spring Batch - 개요, 도메인 이해
·
Spring
최근에 이직한 회사에서 스프링 배치를 사용해서, 스프링 배치를 조금 더 잘 활용하기 위해 공부를 시작했다.  시중의 책, 강의, 공식 문서를 기반으로 내용을 정리한다. 실무에서 참고할만한 상황이 있다면 해당 사항도 같이 작성할 예정이다.스프링 배치 개요자바 기반 표준 배치 기술 부재로 만들어짐.SpringSouce 와 Accenture의 합작품Accenture는 이전에 소유했던 배치 처리 아키텍처 프레임워크를 Spring Batch 프로젝트에 기증함배치 핵심 패턴Read - 데이터 조회 (extract)Process - 특정 방법으로 데이터를 가공 (transform)Write - 데이터를 수정된 양식으로 저장 (load)배치 시나리오배치 프로세스를 주기적으로 커밋동시 다발적인 job의 배치 처리 (다중..
Spring AOP vs AspectJ
·
Spring
Spring AOP 1. 프록시 기반 : Spring AOP 는 주로 프록시 기반의 AOP 구현을 제공함. 대상 객체에 대한 프록시를 생성하고, 해당 프록시를 통해 메서드 호출을 가로채는 방식. 2. 런타임 위빙 : Spring AOP는 런타임 위빙을 사용합니다. 어플리케이션 실행 중에 AOP가 적용됨. 3. 적용 범위 : Spring AOP는 메서드 실행에 대한 Join Point에만 적용됨. 생성자 호출, 필드 접근, static메서드 호출등은 조인 포인트로 고려되지 않음. 4. Spring 통합 : Spring 프레임워크와 긴밀하게 통합되어 있음, Spring Container에 의해 관리되는 빈에만 적용할 수 있음. 5. JAVA 기반 : 순수 JAVA만으로 구현이 되어있음 6. 속도 : Aspe..
Weaving
·
Spring
Weaving 모듈화한 부가 기능을 타겟에 적용하여, 핵심 기능과 연결하는 과정을 뜻한다. Runtime Weaving (RTW) - 프록시 패턴을 활용한 위빙 방식으로, Proxy객체를 생성하여 실제 타깃 오브젝트의 변형 없이 런타임 중 메서드 호출이 일어나는 일어나는 방식이다. - Proxy, Reflection, 바이트 코드 조작등의 기술을 사용하여 이루어짐. - Spring AOP와 같은 프레임워크를 통해 Runtime Weaving을 구현할 수 있다. 1. Aspect 정의 package com.example; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; @Aspect public cla..
takoyummy
'Spring' 카테고리의 글 목록