如何在xml中设置Spring Batch jobParameters?

时间:2014-05-20 21:28:25

标签: java spring spring-batch

使用参数时,这个job.xml非常有用。

<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>

我可以使用任何版本的弹簧或弹簧。

1 个答案:

答案 0 :(得分: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几行,看起来更像您想要的解决方案。