Spring 배치에서 제공하는 ItemWriter 중 File 기반 관련 설정을 사용할 경우, 대용량 데이터 처리 시간이 상용 배치프레임워크과 비교하여 큰 차이가 발생해 실무에 적용하기에는 부족한 점이 있었다. 이 문제를 해결하기 위해서 File 기반 Item Writer의 요소 중 성능저하 요인인 FieldExtractor, FormatterLineAggregator 부분을 개선하였다.
EgovFlatFileItemWriter는 EgovFieldExtractor 개선으로 Spring의 FlatFileItemWriter(Delimited 방식, Formatter 방식)의 성능을 개선하였으며, FormatterLineAggregator의 경량화를 통해 Formatter 방식의 FlatFileItemWriter의 성능을 다시 한번 개선하였다.
설정항목 | 내용 |
---|---|
delimiter | 필드의 경계를 구별해주는 문자를 나타낸다. |
<bean id="eGovDelimitedFlatFileItemWriter" class="org.springframework.batch.item.file.FlatFileItemWriter"> <property name="resource" value="output resource path.." /> <property name="lineAggregator"> <bean class="org.springframework.batch.item.file.transform.DelimitedLineAggregator"> <property name="fieldExtractor"> <bean class="org.springframework.batch.item.file.transform.EgovFieldExtractor"> <property name="names" value="name,credit" /> </bean> </property> <property name="delimiter" value="," /> </bean> </property> </bean>
설정항목 | 내용 |
---|---|
fieldRanges | 필드 경계의 길이를 나타낸다. |
<bean id="eGovFixedlengthFlatFileItemWriter" class="org.springframework.batch.item.file.FlatFileItemWriter"> <property name="resource" value="output resource path.." /> <property name="lineAggregator"> <bean class="org.springframework.batch.item.file.transform.EgovFixedLengthLineAggregator"> <property name="fieldExtractor"> <bean class="org.springframework.batch.item.file.transform.EgovFieldExtractor"> <property name="names" value="name,credit" /> </bean> </property> <property name="fieldRanges" value="10,2" /> </bean> </property> </bean>
FlatFileItemWriter