2013-07-24 66 views
0

我在我的應用程序中使用Spring Cache,並希望去實施ehCache。如何避免在ehcache.xml中指定所有緩存名稱?如何避免在spring中使用ehCache指定所有緩存名稱?

<?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中指定所有緩存名稱。有沒有辦法?

回答

0

使用EhCache,您可以根據需要以編程方式創建所有緩存(例如在應用程序啓動時) 仍然需要一個ehcache.xml,並至少定義一個defaultCache ...但您可以創建一個新的緩存2種方式:

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