当前位置: 首页 > 知识库问答 >
问题:

使用函数为Spring spel提供值

奚英朗
2023-03-14

我使用的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);

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

共有1个答案

水品
2023-03-14

您不能使用lambda-SpEL函数必须是静态方法。

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

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

}

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

 类似资料:
  • 寻找如何使用Javalambda函数,以便消费者可以处理供应商提供的所有对象,并在循环和检查时摆脱显式

  • 代码如下: 我得到以下错误: /users/johann/work/dev/kotlin/rxjava-walkthrough-kotlin/app/src/test/java/ktplay/rxkotlinplay.kt:(49,14):不能使用提供的参数调用以下函数:@checkreturnvalue@schedulersupport public final fun subscribe(p0

  • 我刚刚开始学习Node,我正在尝试使用Node和Express构建一个Web应用程序。我的app.js文件中有以下代码,具有以下目录结构。 目录结构: -js公司- 运行命令node app并转到localhost:3000后。我得到以下错误。我想它不喜欢这一行的字符串- 错误消息: TypeError:字符串不是函数在Fnode_modules(C:\myapp\Express\node_mod

  • 用户数据文件时在元数据服务中的一个特殊的键,它保存了一份能给虚拟机实例中的云服务使用的文件。比如,cloud-init程序便使用了用户数据文件,这个程序是一个源自Ubuntu的开源包,能用在多个Linux发行版上,它可以接管云实例的初始化过程。 您可以将用户数据写在一份本地文件中,然后在创建实例时用--user-data <user-data-file>参数将其传入。 $ nova boot --

  • 我有一个自定义需求,我想根据特定角色决定是否可以访问API。我使用的是Spring框架。我想支持这样的观点: 其中表示一个角色<代码>|和

  • 0.9.2 新版功能. 封装字符串,提供 ANSI 色彩输出的函数。 本模块中的所有函数均返回包裹对应色彩 ANSI 字符的 text 字符串。 例如,在支持 ANSI 的终端中打印绿色文字: from fabric.colors import green print(green("This text is green!")) 这些函数返回值都是修改后的字符串,因此你也可以嵌套使用它们: fro