목차

EgovFileWriter

개요

Spring 배치에서 제공하는 ItemWriter 중 File 기반 관련 설정을 사용할 경우, 대용량 데이터 처리 시간이 상용 배치프레임워크과 비교하여 큰 차이가 발생해 실무에 적용하기에는 부족한 점이 있었다. 이 문제를 해결하기 위해서 File 기반 Item Writer의 요소 중 성능저하 요인인 FieldExtractor, FormatterLineAggregator 부분을 개선하였다.

설명

FlatFileItemWriter와 EgovFlatFileItemWriter의 구조

FlatFileItemWriter와 EgovFlatFileItemWriter의 구조는 다음과 같다.



차이점 및 개선사항

EgovFlatFileItemWriter는 EgovFieldExtractor 개선으로 Spring의 FlatFileItemWriter(Delimited 방식, Formatter 방식)의 성능을 개선하였으며, FormatterLineAggregator의 경량화를 통해 Formatter 방식의 FlatFileItemWriter의 성능을 다시 한번 개선하였다.

EgovFlatFileItemWriter의 설정

eGovDelimitedFlatFileItemWriter(Delimited 방식)

설정항목 내용
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>

eGovFixedlengthFlatFileItemWriter(FixedLength 방식)

설정항목 내용
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