2014-05-20 53 views
0

這個job.xml在使用參數時效果很好。如何在xml中設置Spring批處理jobParameters?

<beans> 
    <bean id="testFileItemWriter" class="org.springframework.batch.item.file.FlatFileItemWriter" scope="step"> 
     <property name="resource" value="#{jobParameters['paramFileOuput']}"/> 
     <property name="shouldDeleteIfExists" value="true" /> 

     <property name="lineAggregator"> 
        ... 
     </property> 
    </bean> 
</beans> 

但如果我不想使用作業參數,而是使用Spring配置文件...

<beans> 
    <bean id="testFileItemWriter" class="org.springframework.batch.item.file.FlatFileItemWriter" scope="step"> 
     <property name="resource" ref="testFileOutput"/> 
     <property name="shouldDeleteIfExists" value="true" /> 

     <property name="lineAggregator"> 
        .... 
     </property> 
    </bean> 
    <beans profile="dev"> 
     <bean id="testFileOutput" class="java.lang.String"> 
      <constructor-arg type="java.lang.String" value="file:c:/temp/testfile.txt" /> 
     </bean> 
    </beans> 
    <beans profile="prod"> 
     <bean id="testFileOutput" class="java.lang.String"> 
      <constructor-arg type="java.lang.String" value="file:pathtoprod.txt" /> 
     </bean> 
    </beans> 
</beans> 

這似乎工作。但這只是感覺不對。有沒有辦法使用配置文件在xml中設置參數?沿着這些線路

東西(這顯然是行不通的)

<beans profile="dev"> 
    <setJobParameter key="testFileOuput" value="file:c:/temp/testfile.txt" /> 
</beans> 

我可以用彈簧或springbatch的任何版本。

+0

您可以嘗試將其移動到屬性文件中。它可能會幫助你[春天批次:作業屬性](http://stackoverflow.com/questions/16209838/spring-batch-job-properties) – Braj

+0

是的...我可以但總體上我想配置在xml內的一切文件本身。 (如果可能的話) – JeffJak

回答

0

如何:

public FileOutput { 
private String filename; 
... 
} 

<beans profile="dev"> 
     <bean id="testFileOutput" class="FileOutput " c:filename="file:pathtoprod.txt"> 
</beans> 

不幸,你不能使用P/C命名空間java.lang.String中,這就是爲什麼你需要一點輔助類。無論如何,這個解決方案會將你的context.xml縮小几行,看起來更像你想要的解決方案。

相關問題