Wie soll ich @CachePut und @CacheEvict Anmerkungen mit ehCache (ehCache 2.4.4, Spring 3.1.1)
Ich habe versucht, einige neue Feder-features, und ich fand heraus, dass @CachePut und @CacheEvict Anmerkungen keine Wirkung hat. Kann sein das ich etwas falsch mache. Könnten Sie mir helfen?
Meine 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"/>
Dieser Teil gut funktioniert.
@Cacheable(value = "finders")
public Finder getFinder(String code)
{
return getFinderFromDB(code);
}
@CacheEvict(value = "finders", allEntries = true)
public void clearCache()
{
}
Aber wenn ich will, entfernen einzelner Wert aus dem cache außer Kraft setzen, ich kann das nicht tun. Was ich getestet habe:
@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;
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hab ich den Grund gefunden, warum es nicht funktioniert hat. Ich nannte diese Methoden von anderen Methode in derselben Klasse. Also diese Anrufe nicht bekommen, durch Proxy-Objekt, daher der Anmerkungen hat nicht funktioniert.
Korrekte Beispiel:
und