====== EgovFileWriter ======
===== 개요 =====
Spring 배치에서 제공하는 ItemWriter 중 File 기반 관련 설정을 사용할 경우, 대용량 데이터 처리 시간이 상용 배치프레임워크과 비교하여 큰 차이가 발생해 실무에 적용하기에는 부족한 점이 있었다. 이 문제를 해결하기 위해서 File 기반 Item Writer의 요소 중 성능저하 요인인 FieldExtractor, FormatterLineAggregator 부분을 개선하였다.
===== 설명 =====
==== FlatFileItemWriter와 EgovFlatFileItemWriter의 구조 ====
=== FlatFileItemWriter와 EgovFlatFileItemWriter의 구조는 다음과 같다. ===
{{:egovframework:rte2:brte:batch_core:egovfileitemwriter.png?1300|}} \\ \\
===차이점 및 개선사항==
* EgovFieldExtractor : Spring의 FlatFileItemWriter의 BeanWrapperFieldExtractor를 경량화하여 item(VO)에서 field value 추출 과정의 성능 개선. FlatFileItemWriter의 두가지 방식인 Delimited 방식과 Formatter 방식 성능 개선
* EgovFixedLengthLineAggregator : Spring의 FormatterLineAggregator는 Java의 format() 메소드를 이용하여 다양한 format으로 변환할 수 있지만 가장 기본 설정인 문자열 길이만 지정할 때 성능이 떨어지는 단점이 있다. 이에 사용자가 문자열 길이만 지정할 때의 성능을 개선 (format 지정은 VO에서 직접하여 FormatterLineAggregator와 같은 기능이지만 성능 개선 된 LineAggregator 사용 가능)
EgovFlatFileItemWriter는 EgovFieldExtractor 개선으로 Spring의 FlatFileItemWriter(Delimited 방식, Formatter 방식)의 성능을 개선하였으며, FormatterLineAggregator의 경량화를 통해 Formatter 방식의 FlatFileItemWriter의 성능을 다시 한번 개선하였다.
==== EgovFlatFileItemWriter의 설정 ====
=== eGovDelimitedFlatFileItemWriter(Delimited 방식) ===
^ 설정항목 ^ 내용 ^
| delimiter | 필드의 경계를 구별해주는 문자를 나타낸다. |
=== eGovFixedlengthFlatFileItemWriter(FixedLength 방식) ===
^ 설정항목 ^ 내용 ^
| fieldRanges | 필드 경계의 길이를 나타낸다. |
===== 참고자료 =====
FlatFileItemWriter