2013-05-08 4 views
0

Я ищу реализацию в Spring Batch, которая будет выполнять READ -> PROCESS -> WRITE для плоских файлов.Весенний пакетный процесс чтения для записи нескольких файлов

Мы будем читать 10 файлов из папки ввода и записывать 10 файлов в выходной папке. Для каждого входного файла будет некоторая обработка/преобразование данных, и соответственно будет создан выходной (преобразованный) файл.

Просьба предложить/посоветуйте, как это сделать.

ответ

1

Вы можете использовать MultiResourceItemReader.

См следующий пример кода

<bean id="multiResourceItemReader" class="org.springframework.batch.item.file.MultiResourceItemReader"> 
     <property name="resources" 
value="file:./src/main/resources/input/*.txt" />  <property 
name="delegate">   <bean 
class="org.springframework.batch.item.file.FlatFileItemReader"> 
       <property name="lineMapper"> 
        <bean class="org.springframework.batch.item.file.mapping.DefaultLineMapper"> 
         <property name="lineTokenizer"> 
          <bean class="org.springframework.batch.item.file.transform.DelimitedLineTokenizer"> 
           <property name="names" value="firstname,lastname,birth" /> 
          </bean> 
         </property> 
         <property name="fieldSetMapper"> 
          <bean class="com.zenika.workshop.springbatch.ContactFieldSetMapper" /> 
         </property> 
        </bean> 
       </property>    </bean>   </property>  </bean> 

Здесь MultiResourceItemReader читает все .txt файл из папки /src/main/resources/input.

0

простой ключ

<bean class="CustomReader1" id="cr1"> 
    <property name="folderLocation" value="/path/to/sourcefiles/parent/directory/"/> 
</bean> 
<bean class="CustomReader2" id="cr2"> 
    <property name="filesLocations"> 
     <list> 
      <value>/path/to/sourcefiles/parent/directory/file1.txt</value> 
      <value>/path/to/sourcefiles/parent/directory/file2.txt</value> 
      <value>/path/to/sourcefiles/parent/directory1/file1.txt</value> 
      <value>/path/to/sourcefiles/parent2/directory/file1.txt</value> 
     </list> 
    </property> 
</bean> 
<bean class="MainItemReader" id="mainItemReader"> 
    <property name="itemReaders"> 
     <list> 
      <bean ref="cr1"/> 
      <bean ref="cr2"/> 
     </list> 
    </property> 
</bean> 
Смежные вопросы