我在spring ehcache中工作,我在下面的代码中spring junit工作正常。但是,如果从我的代码运行它,则会抛出如下错误
java.lang.IllegalArgumentException: Cannot find cache named 'productCategoryCache' for Builder[public com.tagit.mobeixbank.db.domain.CardsProductSTB com.tagit.mobeixbank.db.util.MobeixBankCacheManager.getAccountProductDetail(java.lang.String)] caches=[productCategoryCache] | key='' | keyGenerator='' | cacheManager='' | cacheResolver='' | condition='' | unless='' | sync='false'
我这里有Java代码
@Override
@Cacheable(value="productCategoryCache", key="'productCategories'")
public CardsProductSTB getProductCodeByProductId(String productId) throws ModelException {
LOG.info("getProductCodeByProductId : "+productId);
//my db logic
} catch (Exception e) {
e.printStackTrace();
throw new ModelException("Error occured in [CardsProductSTB.findByProductId]", e);
} finally {
closeSession();
}
return productDetails;
}
以下是我的上下文XML配置:
<diskStore path="java.io.tmpdir/mobeix" />
<defaultCache maxEntriesLocalHeap="10000" eternal="false"
timeToIdleSeconds="120" timeToLiveSeconds="120" diskSpoolBufferSizeMB="30"
maxEntriesLocalDisk="10000000" diskExpiryThreadIntervalSeconds="120"
memoryStoreEvictionPolicy="LRU" statistics="true">
<persistence strategy="localTempSwap" />
</defaultCache>
<cache name="productCategoryCache" maxEntriesLocalHeap="1000"
maxEntriesLocalDisk="1000" eternal="false" diskSpoolBufferSizeMB="20"
timeToIdleSeconds="200" timeToLiveSeconds="500"
memoryStoreEvictionPolicy="LFU" transactionalMode="off">
<persistence strategy="localTempSwap" />
</cache>
<cache name="transactionMatrixCache" maxEntriesLocalHeap="1000"
maxEntriesLocalDisk="1000" eternal="false" diskSpoolBufferSizeMB="20"
timeToIdleSeconds="200" timeToLiveSeconds="500"
memoryStoreEvictionPolicy="LFU" transactionalMode="off">
<persistence strategy="localTempSwap" />
</cache>
</ehcache>`
请帮助我哪里做错了。这个问题困扰着我很多时间。