如何在Java Spring中的不同请求中使用SET的相同实例

时间:2019-07-15 22:14:19

标签: java spring spring-boot spring-mvc

我正在尝试实现一种功能,可以将已连接到我的应用程序的ID或用户列表排队,并每分钟将其转储到数据库中。

为了实现这一目标,我打算将所述用户的ID存储在一个集合中,然后将其存储在数据库中,并每分钟清空该集合。

但是我的挑战包括

  • 如何在来自不同用户的各种请求中使用集合的相同实例,这样我就可以获得各个用户的列表。

我无法使用会话,因为如上所述,该集合将是在不同会话中使用的不同用户的ID。

2 个答案:

答案 0 :(得分:1)

您可以在@Service中使用类级别的变量,因为它的默认范围是单例或静态变量。但是您必须正确维护Set的内容,因为它可能导致内存泄漏。

答案 1 :(得分:0)

简而言之,您可以对问题使用线程安全集实现,但是我个人将尝试使用“发布-订阅”模式,其中发布者发布事件(在您的情况下为ID),而订阅者可以(同步或异步)将事件缩减为一组,然后将其刷新到数据库中。