当前位置: 首页 > 知识库问答 >
问题:

Spring批处理生成的项目列表的Bean ID

洪博艺
2023-03-14

在Spring批处理中,ItemReader或ItemProcessor返回其item对象后,框架将该项放入ArrayList中,以传递给ItemWriter。

我需要在ItemProcessor中访问项目的ArrayList。我需要的核心功能是在ItemReader/ItemProcessor处理Arraylist的块时访问它。

我的想法是使用ApplicationContextAware ItemProcessor,允许我在下面打电话:

ArrayList<? extends Item> items = context.getBean("items", ArrayList.class)

但是bean不是命名项。

你知道我怎样才能进入阵列列表,或者豆子的名字,这样我就可以把它强行放进去了吗?

共有1个答案

毋城
2023-03-14

使用以下spring批次注释(从spring batch 2.0开始提供)

@beforeWrit
标记要在项传递给ItemWriter之前调用的方法
预期签名:在写之前无效(列表项)

在写入方法之前,将为每个块执行标记有此注释的写入器上的方法。

 类似资料:
  • 我正在尝试实现一个Spring批处理作业,为了处理记录,它需要2-3个db调用,这会减慢记录的处理速度(大小为100万)。如果我使用基于块的处理,它会单独处理每条记录,性能会很慢。因此,我需要一次性处理1000条记录,作为批量处理,这将减少数据库调用,并提高性能。但我的问题是,如果我实现Tasklet,那么我也会失去可重启性和重试/跳过功能,如果使用AggregateInputReader实现,我

  • 我们使用Spring Batch进行一些处理,通过Reader读取一些ID,我们希望通过处理器将它们处理为“块”,然后写入多个文件。但是处理器接口一次只允许处理一个项目,我们需要进行批量处理,因为处理器依赖于第三方,不能为每个项目调用服务。 我看到我们可以为“块”中涉及的所有读取器-处理器-写入器创建包装器,以处理列表<>并委托给一些具体的读取器/处理器/写入器。但这对我来说并不是件好事。像这样:

  • 我正在使用JpaPagingItemReaderBuilder查询一个DB,结果被插入到另一个DB中。 查询返回的结果没有任何问题,但我得到了一个错误与读取器的返回,在处理器中,您可以检查我的编码和错误下面。 有谁能给我一点启示吗?为什么我不能处理结果?

  • 我正在处理包含数据库中多个记录列表的。 我应该如何指定处理每个子列表的块大小? 感谢您的帮助,提前谢谢。

  • 在Spring batch中(请参见https://docs.Spring.io/spring-batch/3.0.x/reference/html/metadataschema.html),有六个表: batch_job_execution batch_job_execution_context batch_job_execution_params batch_job_instance batc

  • 我正在学习spring batch,并试图理解在异常期间项目处理器是如何工作的。 我试图通过在我的项目处理器中为一条记录手动抛出异常来模拟异常 现在根据跳过限制,当异常被抛出时,项目处理器将重新处理块并跳过抛出错误的项目,项目写入也将所有记录插入数据库,除了一条异常记录。 这一切都很好,因为我的处理器,它只是转换为大写字母名称,它可以运行很多次,但影响很大。 其他的选择是什么?