我有一个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));
}
答案 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
放在要缓存的方法上,然后将其从不想缓存的方法中删除。