В моем файле определений bean-компонентов весеннего пакетного проекта настроен следующий писатель:
<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));
}
}
}