В проекте Spring Batch, включающем чтение и запись в MongoDB, запись в MongoDB с использованием MongoItemWriter
настраивается следующим образом:
<batch:job id=“someJob”>
<batch:step id="step1">
<batch:tasklet>
<batch:chunk reader=“reader”
writer=“writer”
processor=“processor” commit-interval="10" />
</batch:tasklet>
</batch:step>
</batch:job>
Компонент Writer настраивается следующим образом:
<bean id="writer"
class="org.springframework.batch.item.data.MongoItemWriter">
<property name="template" ref="mongoTemplate" />
<property name="collection"
value="XYZCollection" />
</bean>
Тогда у нас есть модель:
public class Sample {
@Id
private ObjectId id;
@Field(“Field1”)
private String field1;
@PersistenceConstructor
public Sample() { }
// getter and setters
}
Наконец, из processor
возвращается объект класса, модель которого составляет документ MongoDB, так что ItemWriter
выберет егодля вставки в базу данных:
public class Processor implements ItemProcessor<Sample, Sample> {
@Override
public Sample process(Sample sampleItem) throws Exception {
Sample updatedSampleItem = updateSampleItem(sampleItem);
Sample newSampleItem = createSampleItem(sampleItem);
return newSampleItem;
}
}
Используемые версии: - подпружиненный сердечник 5.1.3.RELEASE - подпружиненный пакет 4.1.0.RELEASE - spring-data-mongodb 2.1.3.RELEASE
Теперь, это сохраняет newSampleItem
в XYZCollection
, как и должно.Требуется, чтобы Spring-Batch обновил прочитанное sampleItem
, а затем создал новый документ для объекта newSampleItem
.Возможно ли это сделать?Если да, то как?