강의

멘토링

로드맵

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

김강훈님의 프로필 이미지
김강훈

작성한 질문수

죽음의 Spring Batch: 새벽 3시의 처절한 공포는 이제 끝이다.

2장. 작전2: FlatFileItemWriter (죽음을 파일에 새기다 ☠️)

FlatFileItemWriter의 FieldExtractor 커스텀 관련

작성

·

22

1

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

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

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

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

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

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

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

고마워 킬구형아

답변 3

2

김강훈님의 프로필 이미지
김강훈
질문자

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

KILL-9님의 프로필 이미지
KILL-9
지식공유자

굿굿 형 💀 

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

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

 

 

2

KILL-9님의 프로필 이미지
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님의 프로필 이미지
KILL-9
지식공유자

이런 강훈형 알람이 덮어져서 놓쳤다 얼른 답변하겠다 💀💀
김강훈님의 프로필 이미지
김강훈

작성한 질문수

질문하기