인프런 커뮤니티 질문&답변

구준형님의 프로필 이미지

작성한 질문수

스프링 배치

스프링 배치 5 변경점 정리

24.06.26 19:48 작성

·

554

·

수정됨

8

5버전으로 강의 따라가면서 정리하고 있습니다(현재진행중). 공유하고자 올려봅니다.

혹여나 틀린점 있으면 지적해주세용.

Execution context serialization Updates

  • https://github.com/spring-projects/spring-batch/wiki/Spring-Batch-5.0-Migration-Guide

  • ExecutionContext에 Base64로 인코딩된 데이터가 저장됩니다.

  • @Configuration public class BatchConfig { @Bean public ExecutionContextSerializer jacksonSerializer() { return new Jackson2ExecutionContextStringSerializer(); } }

  • 강의처럼 데이터를 json으로 저장하고 싶으면, jackson-core의존성을 추가한 후, 위 설정클래스를 정의합니다.

섹션2~3

@EnableBatchProcessing 을 쓰게되면 BatchAutoConfiguration이 적용되지 않는다.

  • https://umbum.dev/1320/

  • 자동 구성과 수동 구성 요소가 동시에 존재할 때 발생할 수 있는 모호성과 충돌을 피하기 위해

BuilderFactory대신 JobBuilder, StepBuilder 직접 사용

  • 팩토리 클래스들은 종종 불필요한 복잡성을 추가하고, Spring Batch 구성의 일관성을 떨어뜨림.

  • 직접 사용해서 더 많은 제어 권한 획득

Tasklet 사용시 , PlatformTransactionManager 함께사용 (단일 사용 deprecated)

배치 설정 클래스 BasicBatchConfigurer DefaultBatchConfiguration으로 변경

 

섹션 3 - JobLauncher

주입받은 JobLauncher가 프록시객체가 아닌 실제 객체라서 DefaultBatchConfiguration 에서 JobLauncher를 얻어올 필요없이 바로 타입캐스팅 가능

섹션 4 - 배치 초기화 설정

spring:batch:job: names(x) -> name

실행 할 job을 찾지 못하면 예외가 발생합니다.

 

인텔리제이에 환경설정으로 프로그램 인수를 한개만 할당할 수 있게 변경되었습니다.

  • 파라미터 관련해서는 코드로 할당해줘야 합니다.

  • multiple jobs 실행 불가능.

    • JobLauncherApplicationRunner 의 executeLocalJobs 메서드에서 split으로 job 이름을 구분하는 코드가 삭제되었습니다.

섹션 7 - 스프링 배치 청크 프로세스 이해

  • chunk사용시 , PlatformTransactionManager 함께사용 (단일 사용 deprecated)

  • ItemWriter의 write(List<? extends String> items ) -> write(Chunk<? extends String> chunk)

    • Items에 접근하려면 getItems로 꺼내야합니다.

답변 2

1

beSlow님의 프로필 이미지

2024. 07. 03. 23:42

세세하게 정리해주셔서 감사합니다. 덕분에 무리없이 따라가고 있습니다!

1

정수원님의 프로필 이미지
정수원
지식공유자

2024. 06. 26. 20:35

감사합니다^^