我需要共享静态哈希映射,它将在运行时使用Spring 3.1进行初始化。
我需要创建一个真正的单例bean(不一定是单例范围),它将保存我的所有静态哈希映射。
hashmap也可以在运行时修改,并且必须可用于我的所有spring bean。
我怎么能这样做?提前谢谢,
答案 0 :(得分:1)
我同意@Kevin的评论(ConcurrentHashMap
bean),但刚刚发现Spring 3.1的好处:ConcurrentMapCacheFactoryBean
。文档说:
FactoryBean,以便在使用时轻松配置ConcurrentMapCache 在Spring容器中。
我还发现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的东西融为一体。
答案 1 :(得分:0)
我并非100%了解您的需求,但您可以通过3.5.5 Custom scopes部分创建自己的范围,这将确保纯单例实例并可注入所有bean。并且可以通过适当的同步方法或映射来解决线程安全问题