【发布时间】:2021-12-26 10:24:19
【问题描述】:
我正在尝试将 EHCache3 与 Spring Boot 应用程序一起使用。 所以我做了以下相同的配置。
EhcacheConfig-->
@Configuration
@EnableCaching
@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class})
public class EhcacheConfig {
@Bean
CacheManager getCacheManager() {
CachingProvider provider = Caching.getCachingProvider();
CacheManager cacheManager = provider.getCacheManager();
CacheConfigurationBuilder<Integer, WorklistListResponse> configurationBuilder =
CacheConfigurationBuilder.newCacheConfigurationBuilder(
Integer.class,
WorklistListResponse.class,
ResourcePoolsBuilder.heap(1000).offheap(25, MemoryUnit.MB))
.withExpiry(ExpiryPolicyBuilder.timeToLiveExpiration(Duration.ofMinutes(2)));
CacheEventListenerConfigurationBuilder asynchronousListener = CacheEventListenerConfigurationBuilder
.newEventListenerConfiguration(new CacheEventLogger()
, EventType.CREATED, EventType.EXPIRED).unordered().asynchronous();
//create caches we need
cacheManager.createCache("WorkListCache",
Eh107Configuration.fromEhcacheCacheConfiguration(configurationBuilder.add(asynchronousListener)));
return cacheManager;
}
}
从服务类调用缓存-->
@Override
@Cacheable(cacheNames="WorkListCache",key = "#filterRequest.currentPage")
public WorklistListResponse getFilterWorklists(FilterRequest filterRequest) {
log.info("From Service Layer Call...");
使用 Swagger Code Gen 生成的预期缓存对象-->
/**
* WorklistListResponse
*/
@javax.annotation.Generated(value = "org.openapitools.codegen.languages.SpringCodegen", date = "2021-11-12T15:55:02.856537800+05:30[Asia/Calcutta]")
public class WorklistListResponse implements Serializable {
private static final long serialVersionUID = 1L;
@JsonProperty("worklist")
@Valid
private List<WorklistResponse> worklist = null;
@JsonProperty("totalRecordsCount")
private Integer totalRecordsCount;
但是在这个配置之后,我遇到了错误--
2021-11-15 12:08:34,596 [INFO ][task-management][TraceId:4c4129367aa6ee47][WorklistServiceImpl.getFilterWorklists:179] - From Service Layer Call...
2021-11-15 12:08:34,666 [INFO ][task-management][TraceId:4c4129367aa6ee47][AbstractResilienceStrategy.recovered:116] - Ehcache key 1 recovered fromorg.ehcache.spi.resilience.StoreAccessException: org.ehcache.spi.serialization.SerializerException: java.io.NotSerializableException: java.util.ArrayList$SubList
at org.ehcache.core.exceptions.StorePassThroughException.handleException(StorePassThroughException.java:78)
at org.ehcache.impl.internal.store.offheap.AbstractOffHeapStore.computeWithRetry(AbstractOffHeapStore.java:1042)
at org.ehcache.impl.internal.store.offheap.AbstractOffHeapStore.put(AbstractOffHeapStore.java:247)
谁能帮我理解这里的问题?
谢谢
【问题讨论】:
标签: spring-boot caching ehcache spring-cache