有什么方法可以仅在一种方法中启用spring缓存吗?

时间:2019-07-09 06:59:45

标签: spring spring-cache

我有一个spring项目,其中在方法级别上实现了缓存。现在,我需要停止整个项目的缓存。我通过设置标记为false来停止它。

现在我只想为一种方法启用缓存。有什么方法可以只为一种方法启用缓存吗?

@Cacheable(value = CacheHelper.APPLICATION_CACHE_NAME, key = "T(ca.sunlife.grs.core.cache.CacheHelper).generateApplicationCacheKey(T(ca.sunlife.grs.core.cache.CacheKey).CACHE_GET_MEMBER,#request.getClientId() + #request.getPlanId() + #request.getMemberNumber() +#request.getMemberIndicator())", unless = "#result== null")
public GetMemberMqResponse getMemberWithCache(GetMemberRequest request) throws Exception {
    GetMemberMqRequest mqRequest = getMemberDomainToMqMapper.toMqRequest(request);
    GrsLogger.info(this, "MQRequest is:" + mqRequest.getRequestString());
    return getMemberMqResponseParser.parseMqResponse(grsMqTransactionOrMockRunner.run(mqRequest));
}

2 个答案:

答案 0 :(得分:1)

您可以使用NoOpCacheManager并使用Spring Profiles来驱动启用了CacheManager的驱动器。

  

公共类NoOpCacheManager扩展对象实现CacheManager

     

一个基本的无操作CacheManager实现,适合于禁用缓存,通常用于在没有实际后备存储的情况下支持缓存声明。   将简单地接受缓存中未实际存储的任何项目。

@Bean
public CacheManager cacheManager() {
    return new CaffeineCacheManager(); //Example implementation
}

@Bean
@Profile("noCaching")
@Primary
public CacheManager noOpCacheManager() {
    return new NoOpCacheManager();
}

答案 1 :(得分:0)

您只能将@Cacheable放在要缓存的方法上,然后将其从不想缓存的方法中删除。