我需要创建一个大约10,000个条目的不可变集合,这些条目将被更新" (重新创建)每周一次。我一直在阅读Executor框架进行更新,但我不确定如何在使用Spring时实现端到端功能。为了更具描述性:
我的服务器上有一个存储在文件中的10,000个ID号列表。该文件每3-4周更新一次并且规模不断扩大(但可能永远不会超过20000个条目)
我的服务中需要此列表的方法每天被调用数千次,因此我希望将列表存储在内存中一次,而不是每次调用方法时都将其取出
我想通过阅读服务器上的文件并重新创建设置来更新每周一次存储在内存中的列表
In" Springless" Java,似乎我可以创建一个具有静态Set的类和一个每7天更新一次的线程ScheduledExecutor。具有Set / update线程的类在我的服务启动时实例化一次,并且我的" Service" class只在必要时抓取该组。 (不确定这是否是一个好的实现)
使用Spring时获得此功能的最佳方法是什么?
答案 0 :(得分:0)
我建议使用一些内存数据存储区,如Redis和Spring Data Redis来存储您的条目,并具有非常快速的读/写方案。
那就是说,对于你当前设计的Spring方法:
@EnableScheduling
和@Scheduled
注释为您的工作。可以找到指南here @Service
注释标记您的服务,以便Spring在组件扫描期间为其生成一个bean(确保包可见)Set
创建一个非静态设置器,让预定作业调用它来更新设置。由于您的服务是Singleton(默认的Spring bean设置),因此您不必担心在所有服务实例中更改静态集。