Spring SpEL表达式处理原理

版权声明:转载请随意! https://blog.csdn.net/qq_41723615/article/details/89180793

要明确的是,在使用表达式的过程之中,我们除了利用字符串数据操作以外,也可以进行数学的操作。

范例:进行数的操作

public class TestELSimple {

	 public static void main(String[] args) {
	    //1.定义要操作的表达式,使用者更多多的是关注此部分,而不关注具体的解析处理部分,
        String pstr="1 + 2";
        //2.要定义一个表达式的解析器,本次使用的是spel表达式解析器;
        ExpressionParser parpser = new SpelExpressionParser();
        //3.使用特定的解析器来处理指定的字符串操作;
        Expression exp = parpser.parseExpression(pstr);
        //定义相关的一些环境属性,
        EvaluationContext context = new StandardEvaluationContext();
        System.out.println(exp.getValue(context));
	 }
}

输出结果:3

可以发现除了编写字符串之外还可以编写数字,甚至各种字符串的数据,那么如果是由我们自己编写这种表达式,那么首先一定要对其进行一个判断,判断表达式应该由哪些组成,而后要拆分组成的内容,最后要进行字符串相关的数据类型转换,从而得出最终的计算结果。

1.首先必须明确的按照指定的结构要求定义出表达式,例如"1+2";

2.随后需要准备出spel的表达式解析器,而进行解析的时候要按照如下的步骤进行:

    ●使用一个专门的断词器将给定的表达式字符串拆分为Spring可以认可的数据格式;

    ●随后要根据断词器处理的操作结果生成相应的语法结构;

    ●并且在这一个过程之中就需要进行表达式的对错检查;

3.将已经处理后的表达式定义到一个专门的表达式对象之中等待结果的计算;

4.但是考虑到表达式里面可能存在有部分的占位符变量的内容,所以在进行表达式计算之前需要设置一个表达式上下文对象进行占位变量内容的处理;

5.最后设置了变量内容,并且利用表达式对象就可以计算出表达式最终所执行的结果;

猜你喜欢

转载自blog.csdn.net/qq_41723615/article/details/89180793