@Cacheble annotation sur aucun paramètre de la méthode
Je veux avoir @Cacheable
annotation sur la méthode sans paramètre. Dans ce cas, j'utilise @Cacheable comme suit
@Cacheable(value="usercache", key = "mykey")
public string sayHello(){
return "test"
}
Cependant, lorsque j'appelle cette méthode, il n'est pas exécuté et il faire une exception, comme ci-dessous
org.springframework.de l'expression.spel.SpelEvaluationException: EL1008E:(pos 0): Propriété ou le champ "maclé" ne peut pas être trouvé sur l'objet de type " org.springframework.le cache.l'intercepteur.CacheExpressionRootObject' - peut-être pas public?
S'il vous plaît suggérer.
OriginalL'auteur user3534483 | 2015-10-28
Vous devez vous connecter pour publier un commentaire.
Il semble que le Printemps ne vous permettra pas de fournir un texte statique pour la clé de cache dans le
SPEL
, et elle ne comprend pas que par défaut le nom de la méthode sur la touche, ainsi, vous pourriez être dans une situation où deux méthodes en utilisant la mêmecacheName
et sans clé serait potentiellement cache des résultats différents avec la même clé.La méthode la plus simple solution de contournement est de fournir le nom de la méthode que la clé:
Ce serait
sayHello
comme clé.Si vous avez vraiment besoin d'une clé statique, vous devez définir une variable statique dans la classe, et l'utilisation
#root.target
:Vous pouvez trouver ici la liste des SPEL expressions que vous pouvez utiliser dans votre clé.
désolé, je me suis trompé sur la touche par défaut que le Printemps utilise. J'ai édité la réponse et a ajouté le droit de l'information.
Merci...il a travaillé
OriginalL'auteur Ruben
Essayez d'ajouter des guillemets simples autour de
mykey
. C'est un SPEL expression, et les singles devis en faire unString
de nouveau.OriginalL'auteur Cliff
Ajouter un # à la clé
OriginalL'auteur Giggs