优化/限制缓存 Spring 的大小

use*_*170 7 java spring caching

我正在使用@Cacheable注释在缓存中存储一​​些方法

<cache:annotation-driven />

<bean id="cacheManager" class="org.springframework.cache.support.SimpleCacheManager">
    <property name="caches">
        <set>
             <bean class="org.springframework.cache.concurrent.ConcurrentMapCacheFactoryBean" p:name="method1" /> 
            <bean class="org.springframework.cache.concurrent.ConcurrentMapCacheFactoryBean" p:name="method2" />   
        </set>
    </property>
</bean>
Run Code Online (Sandbox Code Playgroud)

但是一旦有多个用户使用该应用程序的缓存已满从​​而阻止该应用程序。有没有办法限制缓存的大小,如果是的话,这可能会影响应用程序的数据吗?

Evg*_*eny 5

不幸的ConcurrentMapCache是,由 生产的ConcurrentMapCacheFactoryBean不允许限制其大小。

并发映射缓存

基于核心 JDK java.util.concurrent 包的简单缓存实现。用于测试或简单的缓存场景

我建议使用更强大的东西,比如基于 EhCache 的缓存番石榴缓存(如果你使用 Spring 4.0 +)。