9
我嘗試了一些新的Spring功能,並且發現@CachePut和@CacheEvict註釋沒有任何作用。可能是我做錯了什麼。你可以幫幫我嗎?我應該如何在ehCache中使用@CachePut和@CacheEvict註解(ehCache 2.4.4,Spring 3.1.1)
我的applicationContext.xml。
<cache:annotation-driven />
<!--also tried this-->
<!--<ehcache:annotation-driven />-->
<bean id="cacheManager"
class="org.springframework.cache.ehcache.EhCacheCacheManager"
p:cache-manager-ref="ehcache"/>
<bean id="ehcache"
class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"
p:config-location="classpath:ehcache.xml"/>
這部分工作正常。
@Cacheable(value = "finders")
public Finder getFinder(String code)
{
return getFinderFromDB(code);
}
@CacheEvict(value = "finders", allEntries = true)
public void clearCache()
{
}
但是,如果我想從緩存中刪除單個值或覆蓋它,我不能這樣做。我所測試的:
@CacheEvict(value = "finders", key = "#finder.code")
public boolean updateFinder(Finder finder, boolean nullValuesAllowed)
{
// ...
}
/////////////
@CacheEvict(value = "finders")
public void clearCache(String code)
{
}
/////////////
@CachePut(value = "finders", key = "#finder.code")
public Finder updateFinder(Finder finder, boolean nullValuesAllowed)
{
// gets newFinder that is different
return newFinder;
}
有同樣的問題,這固定它。謝謝!但是在同一個類中有'@CachePut'和'@Cachable'的具體問題是什麼? – DOUBL3P 2017-08-09 14:14:54