为什么简单的键机不考虑弹簧缓存机制中的方法名称



我们知道Simple Keygenerator的工具如下:

@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);
}

让我感到困惑的是,它不考虑该方法的名称,仅考虑参数。为什么???这导致两个不同参数具有相同键的不同方法,然后在缓存中返回相同的结果!这种设计的目的是什么?

您可以在春季的github上找到答案。

这样做的主要原因是,需要为@cacheable,@cacheput和@cacheevict带注释的方法生成相同的密钥,这很可能是在不同的方法上,并且可能具有不同的bean。

相关内容

  • 没有找到相关文章

最新更新