我想深入了解一下在JavaEE7JSR352Batch中实现spring batch CompositeWriter等价物的可能性。
JSL不允许在一个步骤中包含多个ItemWriters。我的方法是在单个ItemWriter中引入委托模式来执行多个sql语句,就像spring batch CompositeWriter一样。请参见下面的示例代码。
<job id="myJob" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/jobXML_1_0.xsd" version="1.0">
<step id="step1">
<chunk item-count="1000">
<reader ref="JdbcCursorItemReader"/>
<writer ref="myCompositeItemWriter"/>
</chunk>
</step>
</job>
Pseudo code for myCompositeItemWriter:
MyCompositeItemWriter implements ItemWriter {
List<ItemWriter> delegates;
public void open() {
//initialize delegates here
}
public void write(List<Object> chunkedItems) {
for (ItemWriter myWriter: delegates) {
myWriter.write(chunkedItems);
}
}
}发布于 2020-06-15 17:35:59
从JSR-352 specification的"8.2.1.3编写器“部分:
A chunk type step must have one and only one item writer.规范中没有提到作家的写作。因此,您需要创建一个自定义复合编写器,实现您所描述的委托模式,并在您的步骤中将其用作项编写器。显然,如果您使用Spring Batch作为您的JSR-352实现,那么您将免费获得这一点。
https://stackoverflow.com/questions/62367737
复制相似问题