java spel表达式

注意调用函数方式

在 Spring Expression Language(SpEL)中,对于静态方法和非静态方法的调用有一些区别和要求。

静态方法调用
静态方法可以直接通过类名调用,例如:

"T(com.yzw.ajzx.rhzx.rules.service.impl.RulesServiceImpl).tdhAjxqInfo(#aj.bh, #aj.fydm, #aj.sfId).ajjbxx.ah == '20240315hangzhou'"

在上述示例中,T(com.yzw.ajzx.rhzx.rules.service.impl.RulesServiceImpl) 表示引用 RulesServiceImpl 类,并调用其静态方法 tdhAjxqInfo。SpEL 能够直接识别静态方法的调用并执行。

非静态方法调用
对于非静态方法,SpEL 需要访问对象的实例。通常情况下,Spring 的容器会管理 bean 实例,并通过表达式语言引用这些实例的方法。例如:

"rulesService.tdhAjxqInfo(#aj.bh, #aj.fydm, #aj.sfId).ajjbxx.ah == '20240315hangzhou'"
在这个例子中,rulesService 是一个 Spring 管理的 RulesServiceImpl 的实例,可以直接调用其中的非静态方法 tdhAjxqInfo。

str="T(com.yzw.ajzx.rhzx.rules.service.impl.RulesServiceImpl).checkScParams(#aj.bh,#aj.fydm,#aj.sfId).jbxx.sfId == '111'";
SpelExpressionParser parser = new SpelExpressionParser();
StandardEvaluationContext context = new StandardEvaluationContext();
context.setVariable("aj", ysaj);
context.setVariable("qxaj", sscyrVOList);
Expression exp = parser.parseExpression(str);
System.out.print(exp.getValue(context, String.class));

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值