6.5 委托模式(Delegate Pattern)与注册Step

请注意, CompositeItemWriter是委托模式的一个示例, 这在Spring Batch中很常见的。 委托自身可以实现回调接口 StepListener。 如果实现了,那么他们就会被当作JobStep的一部分与 Spring Batch Core 结合使用, 然后他们基本上必定需要手动注册到 Step 中。

一个 reader, writer, 或 processor,如果实现了 ItemStream / StepListener接口,就会被自动组装到 Step 中。 但因为 delegates 并不为 Step 所知, 因此需要被注入(作为listeners监听器或streams流,或两者都可):

  1. <job id="ioSampleJob">
  2. <step name="step1">
  3. <tasklet>
  4. <chunk reader="fooReader" processor="fooProcessor" writer="compositeItemWriter"
  5. commit-interval="2">
  6. <streams>
  7. <stream ref="barWriter" />
  8. </streams>
  9. </chunk>
  10. </tasklet>
  11. </step>
  12. </job>
  13. <bean id="compositeItemWriter" class="...CustomCompositeItemWriter">
  14. <property name="delegate" ref="barWriter" />
  15. </bean>
  16. <bean id="barWriter" class="...BarWriter" />