KeyGenerator fonctionne pas sur la touche Spel, puis-je KeyGenerator sur mesure pour toutes les clés contient @Cacheable(key="#spelKey")
générateur de clé de cache de printemps pourquoi ne pas utiliser la touche Spel
J'ai trouvé le code: 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);
}
}
code de changement comme:
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);
}
Je ne comprends pas l'essence de votre question, mais il y a de la documentation sur la manière de spécifier des clés avec une granularité variée. https://docs.spring.io/spring/docs/current/spring-framework-reference/html/cache.html#cache-annotations-cacheable-key –
@JensSchauder oui, mais je veux écrire la cible et la méthode dans la clé, comme key = [cible, méthode, params] .tojson(), maintenant générateur de clé personnalisée ne pas utiliser de @cacheable (clé = # spel) – Dreampie