Ho provato alcune nuove funzionalità di Spring e ho scoperto che le annotazioni @CachePut e @CacheEvict non hanno alcun effetto. Potrebbe essere che io faccia qualcosa di sbagliato. Potresti aiutarmi?Come dovrei usare le annotazioni @CachePut e @CacheEvict con ehCache (ehCache 2.4.4, Spring 3.1.1)
La mia applicazioneContext.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"/>
Questa parte funziona bene.
Ma se voglio rimuovere un singolo valore dalla cache o sovrascriverlo non posso farlo. Cosa ho provato:
@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;
}
avuto lo stesso problema e questo riparato. Grazie! Ma qual è il problema specifico di avere "@CachePut" e "@Cachable" nella stessa classe? – DOUBL3P