的KeyGenerator上SPEL鍵不能正常工作,可能我定製的KeyGenerator所有主要包含@Cacheable(key="#spelKey")
春天緩存密鑰生成器爲什麼不使用SPEL關鍵
我發現代碼:org.springframework.cache.interceptor.CacheAspectSupport
protected Object generateKey(Object result) {
if (StringUtils.hasText(this.metadata.operation.getKey())) {
EvaluationContext evaluationContext = this.createEvaluationContext(result);
return CacheAspectSupport.this.evaluator.key(this.metadata.operation.getKey(), this.methodCacheKey, evaluationContext);
} else {
return this.metadata.keyGenerator.generate(this.target, this.metadata.method, this.args);
}
}
變化如下代碼:
protected Object generateKey(Object result) {
if (StringUtils.hasText(this.metadata.operation.getKey())) {
EvaluationContext evaluationContext = createEvaluationContext(result);
return this.metadata.keyGenerator.generate(this.target, this.metadata.method, evaluator.key(this.metadata.operation.getKey(), this.methodCacheKey, evaluationContext));
}
return this.metadata.keyGenerator.generate(this.target, this.metadata.method, this.args);
}
我不明白你的問題的本質是什麼,但有一些文件如何指定不同粒度的鍵。 https://docs.spring.io/spring/docs/current/spring-framework-reference/html/cache.html#cache-annotations-cacheable-key –
@JensSchauder是的,但我想寫入關鍵的目標和方法,如key = [target,method,params] .tojson(),現在自定義密鑰生成器不使用@cacheable(key =#spel) – Dreampie