read() 메서드의 핵심 동작은 크게 두 단계로 이뤄진다
// FlatFileItemReader.doRead()
...
String line = readLine(); // 한 줄의 데이터를 읽어온다
...
// 문자열을 도메인 객체로 변환해 리턴한다
return lineMapper.mapLine(line, lineCount);
// DefaultLineMapper.java
@Override
public T mapLine(String line, int lineNumber) throws Exception {
FieldSet fieldSet = tokenizer.tokenize(line); // 1단계 : 문자열을 토큰화해 FieldSet 반환
return fieldSetMapper.mapFieldSet(fieldSet); // 2단계: FieldSet을 객체로 매핑
}
tokens)와 각 데이터를 객체의 어떤 프로퍼티에 매핑할지 나타내는 프로퍼티의 이름 목록(names)을 가지고 있다.names)은 FlatFileItemReader를 구성할 떄 우리가 미리 지정하는 값이다mapFieldSet() 메서드는 LineTokenizer가 만든 FieldSEt 객체를 입력 받아 우리가 원하는 자바 객체로 최종 변환한다BeanWrapperFieldSetMapper 이다.
setter를 호출해서 데이터를 설정MultiResourceItemReader라는 무기를 제공