我是Spring批处理新手并试图将自定义日期(不是今天的日期)附加到输出文件。我可以找到样本来获得工作参数&文件编写器步骤中的作业执行上下文但无法为我的方案找到解决方案。有人可以帮忙吗?
鉴于:
<bean id="abstractFileWriter" class="org.springframework.batch.item.file.FlatFileItemWriter" abstract="true">
<property name="resource" value="file:\target\HelloWorld.{MMDDYYYY}.txt"/>
<property name="shouldDeleteIfExists" value="true" />
</bean>
上面的文件编写器是将数据附加到同一文件的几个步骤的父级。
预期产量为: 如果{MMDDYYYY}设置为01152016,则最终输出文件名应为HelloWord.01152016.txt。
如果我们需要通过引用而不是值传递资源,请分享方式。
请告知。
答案 0 :(得分:0)
如果删除以下行,该怎么办:
<property name="resource" value="file:\target\HelloWorld.{MMDDYYYY}.txt"/>
然后代码中的setResource。这样你就可以在代码中为它命名了。
String myPath = "/Users/myName/blahblahblah_" + myDate + ".txt";
Resource resource = new FileSystemResource(myPath);
abstractFileWriter.setResource(resource);
我没有课程或方法。我根据您提供的配置和文档编写了这个。如果我要为此编写一个方法,我可能会写下面的内容 - 但是有一些未知数,例如你传入的是什么类型的对象,你是否添加了转换器?
@Autowired
private abstractFileWriter;
public <T> void writeFile(List<T> itemList, String fileName, Date date) throws Exception{
JavaConfigApplicationContext context = new JavaConfigApplicationContext(...);
FlatFileItemWriter writer = context.getBean(FlatFileItemWriter.class, "abstractFileWriter");
SimpleDateFormat sdf = new SimpleDateFormat("MMddyyyy");
String stringDate = sdf.format(date);
fileName = fileName + stringDate + ".txt";
Resource resource = new FileSystemResource(fileName);
writer.setResource(resource);
writer.write(itemList);
}