gpt4 book ai didi

java - 如何在 Spring 批处理中使用 FlatFileItemWriter 写入标准输出?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:36:27 25 4
gpt4 key购买 nike

我在 spring batch 项目的 beans 定义文件中配置了以下编写器:

<bean id="writer" class="org.springframework.batch.item.file.FlatFileItemWriter">
<property name="resource" value="file:/path/to/somefile"/>
<property name="lineAggregator">
<bean class="MyCustomLineAggregator"/>
</property>
</bean>

现在,我不想写入/path/to/somefile,而是希望输出到标准输出,原因是我想通过命令行启动器启动这个作业,并将输出通过管道传输到另一个 unix 程序。

我尝试将资源属性设置为“file:/dev/stdout”,但随后出现异常:org.springframework.batch.item.ItemStreamException:无法创建文件:[/dev/stdout]

我试图看看是否有开箱即用的资源可以处理这个问题,但我有点不知道哪个可以完成这项工作......

感谢您的帮助。

编辑:以下是我根据您的建议提出的解决方案:

import java.util.List;
import org.springframework.batch.item.ItemWriter;
import org.springframework.batch.item.file.transform.LineAggregator;

public class StdoutWriter<T> implements ItemWriter<T> {

LineAggregator<T> lineAggregator;

public void setLineAggregator(LineAggregator<T> lineAggregator) {
this.lineAggregator = lineAggregator;
}

@Override
public void write(List<? extends T> items) throws Exception {
for (T item : items) {
System.out.println(lineAggregator.aggregate(item));
}
}

}

最佳答案

我认为没有任何开箱即用的东西可以满足您的需求。创建您自己的 ItemWriter 非常简单,它执行简单的 System.out.println()。然后您可以使用 CompositeItemWriter如果您仍然需要该文件,请将两者结合在一起。

或者,您可以自定义 ItemWriterListener并在那里打印。

关于java - 如何在 Spring 批处理中使用 FlatFileItemWriter 写入标准输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7338223/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com