如何在Spring批处理应用程序中使List或ArrayList对象单例。如何在Java Spring Batch / Boot中将字段注释为单例

问题描述 投票:0回答:1

我正在编写一个Spring批处理应用程序,其中有块/任务来处理多个记录。如果我有100条记录要处理,那么将执行多个块来处理所有记录。假设在第一个块/任务中,前25条记录存储在ArrayList中并进行处理,执行下一个块/任务以存储和处理接下来的25条记录,依此类推。

我想以这样的方式设计ArrayList:它应该存储当前块/任务的记录以及以前执行的块/任务的记录,而不是每次执行每个Batch步骤都创建新对象。对于这种情况,我需要将ArrayList作为单例对象,以便仅存在ArrayList的单个实例,并且我可以拥有以前的记录,也可以存储当前块/任务中的新记录。

我尝试使用Collection :: singletonList()

,但它返回的是不可变的,而不是'Singleton'对象。我也尝试过使用诸如[[@Scope之类的注释,但是它给出了编译错误-“'@Scope'不适用于字段”解决此问题的可能方法是什么?对于此UseCase,我创建单例列表的方法是否正确?

我正在编写一个Spring批处理应用程序,其中有块/任务来处理多个记录。如果我有100条记录要处理,那么将执行多个块来处理所有记录。 ...

java spring-boot collections singleton spring-batch
1个回答
0
投票
您可以将List设置为static final,然后进行访问。这样,您将只有一个实例。我不知道您的代码设计如何,但这是一个简短的示例,可能适合您的情况:
© www.soinside.com 2019 - 2024. All rights reserved.