2016-12-14 30 views
0

我在我的spring-boot應用程序中使用cacheManager。如何在每次測試後重新加載CacheManager

並配置爲我的測試。

<bean id="cacheProvider" class="javax.cache.Caching" factory-method="getCachingProvider"/> 
<bean id="cacheManager" factory-bean="cacheProvider" factory-method="getCacheManager"/> 

在開始我的ehcache不是空的。

我在運行所有測試時遇到了一些邏輯問題。 我想在每次測試後重新加載我的cacheManager。

我試圖用@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD)

,但有一個錯誤

Caused by: java.lang.IllegalStateException: The CacheManager has been shut down. It can no longer be used. 
at net.sf.ehcache.CacheManager.checkStatus(CacheManager.java:1623) 
at net.sf.ehcache.CacheManager.getCacheNames(CacheManager.java:1611) 
at org.ehcache.jcache.JCacheManager.refreshAllCaches(JCacheManager.java:325) 
at org.ehcache.jcache.JCacheManager.getCache(JCacheManager.java:164) 
at com.myapp.service.caching.EntityJCacheContainer.lambda$2(EntityJCacheContainer.java:115) 
at com.myapp.service.caching.EntityJCacheContainer$$Lambda$72/1186361374.get(Unknown Source) 
at com.myapp.service.caching.EntityJCacheContainer.getEntityCache(EntityJCacheContainer.java:120) 
at com.myapp.service.caching.EntityStorageImpl.getEntities(EntityStorageImpl.java:119) 
at com.myapp.service.DataServiceImpl.loadEntities(DataServiceImpl.java:70) 
at com.myapp.service.ClassifierServiceImpl$FilterCriteriaVisitorImpl.visit(ClassifierServiceImpl.java:130) 
at com.myapp.data.impl.FilterCriteriaBuilder$1.accept(FilterCriteriaBuilder.java:20) 
at com.myapp.service.ClassifierServiceImpl.getClassifiers(ClassifierServiceImpl.java:70) 
at com.myapp.controller.ClassifierManagerController.getClassifiers(ClassifierManagerController.java:159) 
... 47 more 

有什麼建議?

回答

0

您的緩存創建爲原型bean嗎? 如果是這樣,你可以通過調用Spring的ObjectFactory :: getObject方法每次獲得一個新的。 (也可以發佈一些關於如何注射這些豆的更多信息?)

相關問題