我有一個問題,其中net.sf.ehcache.CacheManager
顯示返回無效統計信息。我使用ehcache-core v2.3.2
(最新版本)與ehcache-spring-annotations
。不正確的ehcache統計信息:命中+未命中== 0
問題是getMemoryStoreObjectCount
返回對象同時兼具getCacheHits
和getCacheMisses
返回。是不是總數應該是hits + misses
?
下面的單元測試應該說明問題(它應用於空數據庫):
@Test
public void testCache() {
Entity e = ..
dao.storeEntity(e);
dao.getEntity(e);
assertEquals(1, cache.getStatistics().getMemoryStoreObjectCount()); // ok
assertEquals(0, cache.getStatistics().getCacheHits()); // ok
assertEquals(1, cache.getStatistics().getCacheMisses()); // fails due to 0
}
爲了完整性我包括所有必需的結構:
Spring配置
<ehcache:annotation-driven cache-manager="ehCacheManager" />
<bean id="ehCacheManager" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">
<property name="configLocation" value="classpath:ehcache.xml"/>
</bean>
ehcache.xml
<ehcache>
<defaultCache eternal="false" maxElementsInMemory="1000"
overflowToDisk="false" diskPersistent="false" timeToIdleSeconds="0"
timeToLiveSeconds="600" memoryStoreEvictionPolicy="LRU"/>
</ehcache>
道
@Cacheable([email protected](name="StringCacheKeyGenerator"))
public Entity getEntity(Serializable key) {
return // sql ...
}
嗨,你介意發佈你的代碼,關於如何從Spring配置中導出JUnit測試中的「緩存」變量? – Dave 2016-02-19 16:42:39