2016-12-14 32 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方法每次获得一个新的。 (也可以发布一些关于如何注射这些豆的更多信息?)

相关问题