Я использую весенний пакетный мультиресурс JsonItemReader для чтения нескольких файлов из места, как показано ниже:
public MultiResourceItemReader<Trade> getReader() {
ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
Resource[] resources = resolver.getResources("file:" + "D:/files/trade*.json");//trade1.json, trade2.json, etc
MultiResourceItemReader<Trade> reader = new MultiResourceItemReader<>();
reader.setResources(resources);
reader.setDelegate(getDelegate());
return reader;
}
private JsonItemReader<Trade> getDelegate() {
return new JsonItemReaderBuilder<Trade>()
.jsonObjectReader(new GsonJsonObjectReader<>(Trade.class))
.resource(??) /* <--- what to specify here since resource is a mandatory field*/
.name("tradeJsonItemReader")
.build();
}
В getDelegate()
есть способ установить фиктивный ресурс с учетом того, что это обязательное поле? Я устанавливаю ресурсы для MultiResourceItemReader
в методе getReader()
, поэтому мне не нужно этого делать.
Я не могу просто вернуть new GsonJsonObjectReader<>(Trade.class)
из метода getDelegate()
, поскольку MultiResourceItemReader
ожидает ResourceAwareItemReaderItemStream .
Какой у меня лучший вариант для установки ресурса?