인프런 커뮤니티 질문&답변
FlatFileItemWriter의 FieldExtractor 커스텀 관련
작성
·
48
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
지식공유자
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




