我需要共享静态 HashMap ,这些静态 HashMap 将使用 Spring 3.1 在运行时初始化。
我需要创建一个真正的单例 bean(不一定是单例范围),它将保存我所有的静态 HashMap 。
HashMap 在运行时也可以修改,并且它必须可用于我的所有 Spring beans。
- 只要应用程序正在运行,保存静态 map 的 bean 就必须处于 Activity 状态
- 该 bean 需要被所有 spring bean 访问。
- HashMap 需要并发且线程安全。 HashMap 可能有大约 100 个条目,并且将以非常高的速率访问。
我怎样才能实现这个目标?提前致谢,
最佳答案
我同意@Kevin的评论(ConcurrentHashMap
beans),但刚刚发现了很好的 Spring 3.1 添加:ConcurrentMapCacheFactoryBean
。文档说:
FactoryBean for easy configuration of a ConcurrentMapCache when used within a Spring container.
我还发现了this blog post ,建议使用带有 @Cacheable
注释的 bean:
<bean id="cacheManager"
class="org.springframework.cache.support.SimpleCacheManager">
<property name="caches">
<set>
<bean class="org.springframework.cache.concurrent.ConcurrentMapCacheFactoryBean"
p:name="default"/>
</set>
</property>
</bean>
还没有尝试过,但似乎与 Spring 的东西集成得很好。
关于java - 如何创建 "Singleton"Bean 来保存静态 HashMap ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11563919/