如何避免使用spring指定ehCache中的所有缓存名称?

时间:2013-07-24 10:27:59

标签: spring ehcache

我在我的应用程序中使用Spring Cache,并且想要实现ehCache。如何避免在ehcache.xml中指定所有缓存名称?

<?xml version="1.0" encoding="UTF-8"?>

<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd">    

   <defaultCache eternal="true" maxElementsInMemory="100" overflowToDisk="false" />           

   <cache name="test" maxElementsInMemory="10" eternal="true" overflowToDisk="false" />  

</ehcache>

我想避免在XML中指定所有缓存名称。有办法吗?

1 个答案:

答案 0 :(得分:0)

使用EhCache,您可以根据需要以编程方式创建所有缓存(例如,在应用程序启动时) 它仍然需要一个至少定义了defaultCache的ehcache.xml ...但是你可以通过两种方式创建一个新的缓存:

1 - 基于ehcache.xml中定义的defaultCache:

   CacheManager singletonManager = CacheManager.create();
   singletonManager.addCache("testCache");

2 - 根据您想要的自定义设置:

   //Create a singleton CacheManager using defaults
   CacheManager manager = CacheManager.create();

   //Create a Cache specifying its configuration.
   Cache testCache = new Cache(
   new CacheConfiguration("testCache", maxEntriesLocalHeap)
    .memoryStoreEvictionPolicy(MemoryStoreEvictionPolicy.LFU)
    .eternal(false)
    .timeToLiveSeconds(60)
    .timeToIdleSeconds(30)
    .diskExpiryThreadIntervalSeconds(0)
    .persistence(new PersistenceConfiguration().strategy(Strategy.LOCALTEMPSWAP)));

   //Remember to add the cache to the cacheManager: The cache is not usable until it has been added.
   manager.addCache(testCache);

更多信息:http://ehcache.org/documentation/code-samples#adding-and-removing-caches-programmaticallyhttp://ehcache.org/documentation/code-samples#creating-caches-programmatically