0

我正在使用弹簧评估语言如下:

Map<String, Object> bigMap = loader.loadBigMap();
StandardEvaluationContext context = new StandardEvaluationContext();
context.setVariables(bigMap);

我的问题是 bigMap 中包含的大部分数据都没有被使用。相反,我宁愿通过将函数传递给评估上下文来延迟加载我需要的内容,例如:

Function<String, Object> lazyloader = name -> loader.loadForName(name);
StandardEvaluationContext context = new StandardEvaluationContext();
context.setVariables(lazyloader);

但我找不到如何做到这一点。有什么建议吗?

4

1 回答 1

0

你不能用 lambda 来做 - SpEL 函数必须是静态方法。

public void registerFunction(String name, Method method)
public class MyUtils {

    public static Object lazyLoader(String key) {
        ...
    }

}

用于Class.getDeclaredMethod(...)获取对该方法的引用。

于 2021-03-10T17:33:44.450 回答