작성
·
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
2
반갑다 강훈이형, 답변을 시작한다.
자 너가 말한 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