It seems that Spring doesn’t allow you to provide a static text for the cache key in the SPEL
, and it doesn’t include as default the name of the method on the key, so, you could be in a situation when two methods using the same cacheName
and without a key would potentially cache different results with the same key.
The easiest workaround is to provide the name of the method as the key:
@Cacheable(value="usercache", key = "#root.methodName")
public string sayHello(){
return "test"
}
This would set sayHello
as the key.
If you really need a static key, you should define a static variable in the class, and use #root.target
:
public static final String MY_KEY = "mykey";
@Cacheable(value="usercache", key = "#root.target.MY_KEY")
public string sayHello(){
return "test"
}
You can find here the list of SPEL expressions that you can use in your key.