Skip to content

SpEL——Spring表达式

更新: 8/30/2025 字数: 0 字 时长: 0 分钟

SpEL表达式是Spring提供的一种可以被解析的字符串

原理

Spring内置了一套字符串解析器用来解析Spring表达式,进而将普通的字符串转换为了可以使用的语法

java
    @Test
    void contextLoads() {
        ExpressionParser parser = new SpelExpressionParser();
        Object value = parser.parseExpression("11").getValue();
        System.out.println(value);

    }

这里的ExpressionParser就是SpEL的解析器,用来解析SpEL的语法,使用parseExpression方法填入字符串,使用getValue方法获取解析出来的值

可解析值

SpEl表达式的结果只能被映射成四种情况:字符串,数字,布尔,null

加减乘除

Spring表达式本身是支持加减乘除的

支持的运算符:+ - * / % ^(幂)

判断语句

SpEL表达式也支持判断语句,除了Java支持的几种外,还特别支持了between(区间)

1 betwen {1,2} ——> true

判断语句

&& || ! 均支持

变量

可以使用#xxx的格式来将一个外部的变量引用到SpEL内部

java
ExpressionParser parser = new SpelExpressionParser();

Inventor tesla = new Inventor("Nikola Tesla", "Serbian");

EvaluationContext context = SimpleEvaluationContext.forReadWriteDataBinding().build();
context.setVariable("newName", "Mike Tesla"); // 设置变量

// 获取变量newName,并将其赋值给name属性
parser.parseExpression("Name = #newName").getValue(context, tesla);
System.out.println(tesla.getName());  // "Mike Tesla"

但是一般我们肯定很少这么写,因此下面的这种才是最常用的方法。

使用#root与#this变量

Spring提供了两个特殊的变量——#root和#this,其中#this变量引用当前正在被迭代或处理的对象,而#root变量则引用表达式的根对象。

本站访客数 人次      本站总访问量