带包装的CompositeItemWriter

时间:2019-12-02 18:37:25

标签: spring spring-batch

  1. 阅读器->注入名为Person的类
  2. processor-> injest Person,并返回一个包装对象,该对象具有3个字段,所有字段均为Person类型(1. inputPerson,2.outputPerson,3.output)
  3. writer->破坏此包装,应该将前两个字段写入一个文件,而将第三个字段写入第二个文件,作为xml。

这是我为解决此问题而编写的代码:

  @Bean
  public CompositeItemWriter<Wrapper> compositeItemWriter(){
    CompositeItemWriter writer = new CompositeItemWriter();
    writer.setDelegates(Arrays.asList(firstTwoWriters(), thirdWriter));
    return writer;
  }

@Bean
public StaxEventItemWriter<Wrapper> firstTwoWriters() {
     StaxEventItemWriter<Wrapper> xmlFileWriter = new StaxEventItemWriter<>();
    xmlFileWriter.setRootTagName("something");
    String outputName = applicationArguments.getOptionValues("output").get(0);
    FileSystemResource outputResource = new FileSystemResource(outputName);
    xmlFileWriter.setResource(outputResource);
    Jaxb2Marshaller personMarshaller = new Jaxb2Marshaller();
    scoringMapMarshaller.setClassesToBeBound(Person.class);
    xmlFileWriter.setMarshaller(personMarshaller );
}

问题是,我无法选择此编写器应使用哪个字段(inputPerson,outputPerson或output)(应将哪个字段转换为xml)。 有什么想法,我该怎么做? (如果可能,举个例子)

0 个答案:

没有答案