Spring 批处理 - Filewriter 将自定义日期附加到文件名

Spring Batch - Filewriter Append Custom Date to File Name

我是 Spring 批处理的新手,正在尝试将自定义日期(不是今天的日期)附加到输出文件。我可以找到示例以在文件编写器步骤中获取作业参数和作业执行上下文。但找不到适合我的场景的解决方案。有人可以帮忙吗? 鉴于: <bean id="abstractFileWriter" class="org.springframework.batch.item.file.FlatFileItemWriter" 摘要="true"> <属性 名称="resource" 值="file:\target\HelloWorld.{MMDDYYYY}.txt"/> <属性 名称="shouldDeleteIfExists" 值="true" /><br> </bean>

以上文件编写器是将数据附加到同一文件的几个步骤的父级。

预期输出为: 如果 {MMDDYYYY} 设置为 01152016 那么最终输出文件名应该是 HelloWord.01152016.txt.

如果我们需要通过引用而不是值来传递资源,请分享方法。

请指教

如果删除以下行会怎样:

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

我没有 class 或方法。我根据您提供的配置和文档编写了这个。如果我要为此编写一个方法,我可能会编写如下内容 - 但是有一些未知数,例如您传入的对象类型以及您是否添加转换器?

@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);
}