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;
}
InformationsquelleAutor Gosha U. | 2012-02-29
Schreibe einen Kommentar