从 Spring 批处理作业/处理器返回对象

Returning an object from a Spring Batch job / processor

我有一个 Spring 批处理作业,它读取一个非常大的固定长度文件并将其映射到一个对象。验证了关联处理任务中的所有数据。

对 Spring 和 Spring 批处理相当陌生 我想知道是否有可能摆脱工作,一个完全填充的对象,用于特定情况,当我 运行 作业作为另一个进程的一部分(我想访问数据)。

我意识到我可以在没有 Batch 的情况下完成上述操作,而且它的设计似乎有范围限制。

我可以序列化处理器中的对象并走那条路,但为了让我立即满意,我希望有一种方法可以解决这个问题。

谢谢

在用于批处理的@configuration class 中,我创建了一个class 变量(它是我要取回的对象的列表)并使用无参数构造函数实例化。

My Step、ItemReader、LineMapper 设置为使用列表进行输入。自定义 FieldSetMapper 将从构造函数实例化的列表作为参数,并在读取和映射文件时添加到列表中。同样,我的自定义 ItemProcessor 将列表作为输入并 returns 它。

最后,我创建了一个 returns 填充列表的 ReturnObjectList bean。

在我的 main 中,我将 AnnotationConfigApplicationContext getbean 转换为该对象类型的列表。我现在可以在我的主应用程序范围内使用从固定文件生成的对象列表。

不确定就 Spring Java 配置的工作方式而言,这是否是一个健康的解决方案,但它确实满足了我的需要。