Есть ли способ включить кэширование весной только для одного метода? - PullRequest
0 голосов
/ 09 июля 2019

У меня есть весенний проект, в котором я реализовал кэширование на уровне метода. Теперь у меня есть требование остановить кеширование всего проекта. Я остановил его с помощью флага, чтобы установить 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 ]

1 голос
/ 09 июля 2019

Вы можете использовать NoOpCacheManager и диск, для которого CacheManager включен с помощью Spring Профили .

Открытый класс NoOpCacheManager расширяет Объект, реализующий CacheManager

Базовая реализация CacheManager без операций, подходящая для отключения кэширования, обычно используемая для резервного копирования объявлений кэша без фактического резервного хранилища.Просто будет принимать любые элементы в кеш, не сохраняя их на самом деле.

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

@Bean
@Profile("noCaching")
@Primary
public CacheManager noOpCacheManager() {
    return new NoOpCacheManager();
}
0 голосов
/ 09 июля 2019

Вы можете указать @Cacheable только для метода, который хотите кэшировать, и удалить его из методов, которые не хотите кэшировать.

...