2017-12-20 26 views
0

서비스 프레임에서 REST APi를 캐싱하기 위해 Spring 프레임 워크 및 hazelcast 캐시를 사용하고 있습니다. 내가 캐싱하고있는 API에는 @Cacheable 주석과 cachename과 keygenerator가 있습니다. 응용 프로그램 속성 또는 consul 속성을 사용하여 캐싱을 사용하거나 사용하지 않도록 설정하는 가장 좋은 방법을 찾고 있습니다. 그 때문에 @Cachable 주석의 조건 속성에 속성을 전달하려고 시도했지만 작동하지 않습니다. 이 접근 방식을 통해 (API 레벨에서 캐싱 할 때마다) 여러 위치에서 동일한 값을 전달하게됩니다. 그러한 작업을 처리하는 좋은 방법이 있습니까? 여기에서는 예로서 myFirstAPI 의해 반환 여기 코드스프링 프레임 워크 + Hazelcast, @Cacheable 주석을 사용하여 캐시를 사용/사용 중지하는 방법

@Cacheable(cacheNames = CacheName.MyCache1,keyGenerator = "customKeyGen") 
public CachingObject myFirstAPI(String param1, String param2) { 
} 

customKeyGen을 사용할 hazelcast 캐시 넣어 값 (CachingObject)이다. 이 작업을 비활성화해야하는 경우, 현재의 접근 방식은 캐시를 만들기 전에 플래그/조건을 평가하고 조건이 true 인 경우 (캐시가 활성화 된 경우)에만 값을 캐시하도록 일부 값 (응용 프로그램 속성에서 읽음)을 조건으로 전달하는 것입니다. 예 내 경우

@Cacheable(cacheNames = CacheName.MyCache1,keyGenerator = "customKeyGen", condition="${enableCache}") 
public CachingObject myFirstAPI(String param1, String param2) { 
} 

는 (그것은 현재 SpelEvaluationException, 속성 또는 필드 'enableCache'를 던지고 이유를 알아낼 것입니다 내가 조건 던지는 예외를 전달하고있는 표현 언어는 조직의 형태를 나타내는 개체를 찾을 수 없습니다. springframework.cache.interceptor.CacheExpressionRootObject ')

제 질문은 캐시를 사용 설정/사용 중지하는 올바른 방법입니까? 제발 제안 해주세요.

답변