簡體   English   中英

有什么方法可以僅在一種方法中啟用spring緩存嗎?

[英]Is there any way to enable caching in spring for only one method?

我有一個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));
}

您可以使用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();
}

您只能將@Cacheable放在要緩存的方法上,然后將其從不想緩存的方法中刪除。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM