2016-07-20 9 views
1

Ich bin neu in Spring Batch. Ich habe versucht, Daten von CSV file to XML file & verschieben, um es erfolgreich zu verschieben. Aber wenn jedes Mal, wenn ich den Code ausführe, meine XML (Ausgabedatei) überschrieben wird, was ich nicht will, stattdessen möchte ich eine neue Ausgabedatei erstellen (alte Ausgabedateien sollten da sein, die für die Datenverfolgung benötigt werden) für jeden Lauf. Wie kann ich das machen ?Spring Batch - Erstellen Sie jedes Mal eine neue Datei, anstatt sie zu überschreiben, um Daten von CSV nach XML zu übertragen

Hier ist mein Code: Was muss ich in der Datei unten ändern? Lassen Sie es mich wissen, wenn Sie mehr Code von meiner Seite benötigen.

<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:batch="http://www.springframework.org/schema/batch" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation=" 
    http://www.springframework.org/schema/batch http://www.springframework.org/schema/batch/spring-batch.xsd 
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> 

    <!-- JobRepository and JobLauncher are configuration/setup classes --> 
    <bean id="jobRepository" class="org.springframework.batch.core.repository.support.MapJobRepositoryFactoryBean" /> 

    <bean id="jobLauncher" class="org.springframework.batch.core.launch.support.SimpleJobLauncher"> 
     <property name="jobRepository" ref="jobRepository" /> 
    </bean> 


    <!-- ============= ItemReader reads a complete line one by one from input file ============ --> 
    <bean id="flatFileItemReader" class="org.springframework.batch.item.file.FlatFileItemReader" scope="step"> 

     <!-- Get the Resource file --> 
     <property name="resource" value="classpath:ExamResult.txt" /> 

     <property name="lineMapper"> 
      <bean class="org.springframework.batch.item.file.mapping.DefaultLineMapper"> 

       <property name="fieldSetMapper"> 
        <!-- Mapper which maps each individual items in a record to properties in POJO --> 
        <bean class="com.websystique.springbatch.mapper.ExamResultFieldSetMapper" /> 
       </property> 

       <property name="lineTokenizer"> 
        <!-- A tokenizer class to be used when items in input record are separated by specific characters --> 
        <bean class="org.springframework.batch.item.file.transform.DelimitedLineTokenizer"> 
         <property name="delimiter" value="|" /> 
        </bean> 
       </property> 
      </bean> 
     </property> 
    </bean> 


    <!-- ======== XML ItemWriter which writes the data in XML format =========== --> 
    <bean id="xmlItemWriter" class="org.springframework.batch.item.xml.StaxEventItemWriter"> 

     <property name="resource" value="file:xml/ExamResult.xml" /> 

     <property name="rootTagName" value="UniversityExamResultList" /> 

     <property name="marshaller"> 
      <bean class="org.springframework.oxm.jaxb.Jaxb2Marshaller"> 
       <property name="classesToBeBound"> 
        <list> 
         <value>com.websystique.springbatch.model.ExamResult</value> 
        </list> 
       </property> 
      </bean> 
     </property> 
    </bean> 

    <!-- Optional ItemProcessor to perform business logic/filtering on the input records --> 
    <bean id="itemProcessor" class="com.websystique.springbatch.processor.ExamResultItemProcessor" /> 

    <!-- Optional JobExecutionListener to perform business logic before and after the job --> 
    <bean id="jobListener" class="com.websystique.springbatch.listener.ExamResultJobListener" /> 

    <!-- Step will need a transaction manager --> 
    <bean id="transactionManager" class="org.springframework.batch.support.transaction.ResourcelessTransactionManager" /> 


    <!-- ==================== Actual Job =================== --> 
    <batch:job id="examResultJob"> 
     <batch:step id="step1"> 
      <batch:tasklet transaction-manager="transactionManager"> 
       <batch:chunk reader="flatFileItemReader" writer="xmlItemWriter" processor="itemProcessor" commit-interval="10" /> 
      </batch:tasklet> 
     </batch:step> 
     <batch:listeners> 
      <batch:listener ref="jobListener" /> 
     </batch:listeners> 
    </batch:job> 
</beans>  
+0

Verwenden Sie einen Job-Parameter, um die Ausgabedatei anstelle von verkabelten –

+0

Hallo Luca - Wie können wir das tun? Können Sie das Code-Snippet anzeigen? –

+0

SB doc: späte Bindung http://docs.spring.io/spring-batch/reference/html/configureStep.html#late-binding –

Antwort