使用函数为spring spel提供值

l5tcr1uw  于 2021-07-23  发布在  Java
关注(0)|答案(1)|浏览(396)

我使用的spring评估语言如下:

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

但我找不到该怎么做。有什么建议吗?

wljmcqd8

wljmcqd81#

你不能用lambda来实现它-spel函数必须是静态方法。

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

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

}

使用 Class.getDeclaredMethod(...) 获取方法的引用。

相关问题