inflearn logo
강의

講義

知識共有

死のSpring Batch:午前3時の凄まじい恐怖は、もう終わりだ。

第2章。作戦2:FlatFileItemWriter(死をファイルに刻む ☠️)

FlatFileItemWriter의 FieldExtractor 커스텀 관련

84

kig24541316

投稿した質問数 2

1

킬구형 텍스트 강의임에도 몰입감 있는 구성에 연휴에 재밌게 공부하고 있어. 고마워
FlatFileItemWriter에 대한 흐름을 정리하고 질문 해볼게

1. sourceType() 메서드 내 객체 타입에 따라 FieldExtractor 구현체가 결정된다.

2. (Bug가 fix되기 전까지) sourceType() 메서드 내 객체 타입이 Record일 경우 names() 메서드 호출은 무시되고, Record 타입의 모든 property가 쓰일 수밖에 없다.

3. 그렇기에 Record 타입에서 필드 하나를 제외하고 파일을 쓰고싶다면, fieldExtractor()를 사용한 커스텀 구성을 통하여 필드 하나를 제외해야 한다.

내가 강의를 보면서 정리한 흐름이고, 아래는 그 정리 중 나온 질문이야

Q1. BeanWrapperFieldExtractor일 경우 필드 하나를 제외하고 싶다면, names()에서 해당 필드만 제외해도 되나?

Q2. 만약 위와 같은 방법이 된다면, RecordFieldExtractor 관련 Bug가 fix 된 후에 FieldExtractor를 직접 커스텀하는 경우가 별로 없지 않을까 싶은데.. 혹시 내가 생각하지 못한 부분이 있을까?

고마워 킬구형아

java spring spring-boot spring-batch backend

回答 3

2

kig24541316

짧고 굵은 답변 고마워 킬구형. 나도 얼른 완강하고, 배치 시스템 파괴자 최전선으로 뛰어들게!

1

KILL-9

굿굿 형 💀 

얼른 달리기바란다 약 한달뒤면 Spring Batch 6가 릴리즈될 예정이니.

(물론 너무 급해할 필요는 없다. 너가 소속된 팀에서 Spring7 / Spring Boot 4로 업그레이드하기 전까지는 batch6를 사용할 일은 없을테니말이다. 아직 시간이 충분하다.)

 

 

2

KILL-9

반갑다 강훈이형, 답변을 시작한다.

자 너가 말한 Bug란 우리 킬구 스쿼드의 최정예 전사 '자전거'가 제보한 이 이슈를 말하는 것이구나
https://github.com/spring-projects/spring-batch/issues/4916
(어느새 누군가가 PR도 올렸군)

Q1에 대한 답변:
$ echo "BeanWrapperFieldExtractor에서 필드 하나 제외하고 싶다고?"
$ names()에서 그 필드만 빼면 된다
$ kill -9 [excluded_field]  # 처형 완료
짧게 답한다. 그렇다.


Q2에 대한 답변:
$ cat your_question.txt | grep "커스텀하는 경우가 별로 없지 않을까"
$ chmod +x brain.sh && ./brain.sh
이 또한 맞다. "FieldExtractor를 직접 커스텀하는 경우가 별로 없지 않을까 싶은데"
보통 그럴 것이다.

Bug fix 이후엔 names() 만으로도 충분히 필드를 통제할 수 있다.
굳이 FieldExtractor를 커스텀할 필요? 없다.

$ rm -rf 불필요한_커스터마이징
$ echo "프레임워크를 믿어라" > ./truth.txt

LGTM (Looks Gone To Me)

2

KILL-9

이런 강훈형 알람이 덮어져서 놓쳤다 얼른 답변하겠다 💀💀

Json 요청 처리

1

33

2

[건의][6장][작전1] deprecated 메소드

1

48

2

[예제][3장][작전2] windows 에서 마지막 예제

0

39

1

[오타][3장][작전1] 형 이건 빨리 해줘

2

95

2

[오타] "리스너 활용: 시스템 완전 장악 매뉴얼" 부분

1

61

1

[오타] "JobScope와 StepScope 사용 시 주의사항" 부분

1

68

2

spring boot 4 + spring batch 6 설정 변경?

1

100

2

Batch 패키지 설계 — 실무에서 Job 단위 구조

1

97

1

Spring batch를 실행해줄 스케줄러와 batch 실행 환경

1

89

1

메타테이블에 데이터가 생기지 않는 이유

1

108

2

Spring Batch 4.3.10 ExecutionContext 한글 인코딩 이슈 관련 문의

1

106

2

@StepScope 또는 @JobScope와 JobOperator

1

148

5

Remote Partitioning

1

112

2

킬구형 실무에서는 JPA ItemReader / ItemWriter를 더 선호해? 아니면 JDBC itemReader/ItemWriter를 더 선호해?

1

137

2

병렬 중첩

1

103

3

형 코드에 public static class 이게 뭐야 ?

1

136

3

ExitStatus

1

67

2

Batch6: jobOperator.startNextInstance() throws UnexpectedJobExecutionException

1

126

5

jdbc 커서, 페이징에서 일대다 관계 데이터 뻥튀기 조회 처리 방법 질문

1

120

2

SkipPolicy는 여러번 불릴 수 있는가?

1

52

2

형 실무에서 배치 시스템은 어떤 식으로 HA를 구성해??

1

107

1

메타데이터 관리

1

64

2

2장. 작전2: 분산 서버 로그 처형 작전 Resource[]의 대체방안(읽어야할 내용이 매우 커지면?)

1

84

3

2장. 작전2: 분산 서버 로그 처형 작전 (시스템에 의존적인) SystemCommandTasklet 관련 질문

1

97

2