java为什么Spring密钥生成器不考虑Spring缓存机制中的方法名称
我们知道SimpleKeyGenerator的实现如下:
@Override
public Object generate(Object target, Method method, Object... params) {
return generateKey(params);
}
/**
* Generate a key based on the specified parameters.
*/
public static Object generateKey(Object... params) {
if (params.length == 0) {
return SimpleKey.EMPTY;
}
if (params.length == 1) {
Object param = params[0];
if (param != null && !param.getClass().isArray()) {
return param;
}
}
return new SimpleKey(params);
}
让我困惑的是,它不考虑方法的名称,只考虑参数。为什么? 这导致两个具有相同参数的不同方法具有相同的密钥,然后在缓存中返回相同的结果! 这个设计的目的是什么
# 1 楼答案
您可以在Spring的GitHub上找到answer