Antes do Spring 3.1, eu costumava usar a anotação @Cacheable fornecida pelo projeto ehcache-spring-annotations. No entanto, com a introdução do Spring Cache, você não precisa mais usar essa biblioteca e pode usar a anotação org.springframework.cache.annotation.Cacheable.
Para migrar, tudo que você precisa fazer é substituir o @Cacheable pelo da spring.
Eu ainda precisava manter um cache de bloqueio que poderia facilmente na biblioteca antiga, e não estava claro na documentação do Spring como fazer isso. A solução que escolhi foi fornecer um cacheDecoratorFactory no ehcache.xml. Algo como
<cache name="dataCache" eternal="false"
maxElementsInMemory="0" overflowToDisk="false" diskPersistent="false"
timeToIdleSeconds="0" timeToLiveSeconds="14400"
memoryStoreEvictionPolicy="LRU" statistics="true">
<cacheDecoratorFactory class="com.saitz.BlockingCacheDecoratorFactory"></cacheDecoratorFactory>
</cache>
onde BlockingCacheDecoratorFactory está (em Scala)
class BlockingCacheDecoratorFactory extends CacheDecoratorFactory {
def createDecoratedEhcache(cache: Ehcache, properties: Properties): Ehcache = {
return createBlockingCache(cache);
}
def createDefaultDecoratedEhcache(cache: Ehcache, properties: Properties): Ehcache = {
return createBlockingCache(cache);
}
def createBlockingCache(cache:Ehcache):Ehcache = {
val blockingCache = new BlockingCache(cache);
return blockingCache;
}
}