【问题标题】:How spring batch internally initializes state when using JpaPagingItemReader?使用JpaPagingItemReader时spring批处理如何在内部初始化状态?
【发布时间】:2019-11-27 21:21:58
【问题描述】:

我一直试图弄清楚 Spring 批处理是如何实际初始化状态的,但我找不到相当明显的东西。

当一个步骤配置为具有JpaPagingItemReader 时,我相信数据是从数据库中作为页面读取的。我可以在实现中看到像doReaddoReadPage 这样的方法,这些方法是从其他基类继承/覆盖的。如果春季批次只期望ItemReader,那么我预计它仅依赖于read 方法,但是read 方法依赖于必须首先水合的抽象类之一中的results 字段。那么这种情况什么时候发生呢?初始化此类时,是否有任何魔术在此实现中调用某些方法?

【问题讨论】:

    标签: java spring spring-boot jpa spring-batch


    【解决方案1】:

    JpaPagingItemReader 是一个ItemStream,这意味着它的状态保存在数据库中并在重新启动时恢复。

    由于它扩展了AbstractItemCountingItemStreamItemReaderread.count 保存在块边界处(使用ItemStream#update)。重新启动时,会根据页面大小从数据库和当前页面is calculated 中读取读取计数。

    我希望这能阐明内部运作的方式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-25
      • 2019-10-30
      • 1970-01-01
      • 2019-10-05
      • 2016-11-21
      • 2019-05-08
      • 2019-10-28
      相关资源
      最近更新 更多