spring-expression-01

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring-expression-01相关的知识,希望对你有一定的参考价值。

表达式步骤

    public static void main(String[] args) {
        //将一整个语句直接定义了字符串
        String str = "("Hello " + "World!!!").substring(6, 9)";
        //1定义一个专属的表达式解析工具
        ExpressionParser parser = new SpelExpressionParser() ;
        //2定义一个表达式处理类
        Expression exp = parser.parseExpression(str);
        //3进行最终的表达式计算
        EvaluationContext context = new StandardEvaluationContext() ;
        //4通过表达式进行结果计算
        System.out.println(exp.getValue());
        
        System.out.println(str);
    }
    

使用变量

    public static void main(String[] args) {
        //将一整个语句直接定义了字符串 ,其中对字符串的开始索引与结束索引使用替代变量
        String str = "("Hello " + "World!!!").substring(#start, #end)";
        //1定义一个专属的表达式解析工具
        ExpressionParser parser = new SpelExpressionParser() ;
        //2定义一个表达式处理类
        Expression exp = parser.parseExpression(str);
        //3进行最终的表达式计算中进行替代棉量内容的设置
        EvaluationContext context = new StandardEvaluationContext() ;
        context.setVariable("start", 6);
        context.setVariable("end", 9);
        //4通过表达式进行结果计算
        System.out.println(exp.getValue(context));
    
    }

简单表达式

    public static void main(String[] args) {
        //将一整个语句直接定义了字符串 ,其中对字符串的开始索引与结束索引使用替代变量
        String str = "1 + 2";
        //1定义一个专属的表达式解析工具
        ExpressionParser parser = new SpelExpressionParser() ;
        //2定义一个表达式处理类
        Expression exp = parser.parseExpression(str);
        //3进行最终的表达式计算中进行替代棉量内容的设置
        EvaluationContext context = new StandardEvaluationContext() ;
        //4通过表达式进行结果计算
        System.out.println(exp.getValue(context));
    }

自定义分割符

    public static void main(String[] args) {
        //将一整个语句直接定义了字符串 ,其中对字符串的开始索引与结束索引使用替代变量
        String str = "#[1 + 2]";
        //1定义一个专属的表达式解析工具
        ExpressionParser parser = new SpelExpressionParser() ;
        //2定义一个表达式处理类                         边界匹配
        Expression exp = parser.parseExpression(str,new ParserContext() {
            
            @Override
            public boolean isTemplate() {
                return true;
            }
            
            @Override
            public String getExpressionSuffix() {
                return "]";
            }
            
            @Override
            public String getExpressionPrefix() {
                return "#[";
            }            
        });
        //3进行最终的表达式计算中进行替代棉量内容的设置
        EvaluationContext context = new StandardEvaluationContext() ;
        context.setVariable("start", 6);
        context.setVariable("end", 9);
        //4通过表达式进行结果计算
        System.out.println(exp.getValue(context));
    }

基本表达式

    public static void main(String[] args) {
        //将一整个语句直接定义了字符串 ,其中对字符串的开始索引与结束索引使用替代变量
        String str = "null";
        //1定义一个专属的表达式解析工具
        ExpressionParser parser = new SpelExpressionParser() ;
        //2定义一个表达式处理类              
        Expression exp = parser.parseExpression(str);
        //3进行最终的表达式计算中进行替代棉量内容的设置
        EvaluationContext context = new StandardEvaluationContext() ;
        //4通过表达式进行结果计算
        Object num = exp.getValue(context ,Object.class); 
        System.out.println(num);
    }

+

四则运算

^  幂运算 2^3

% MOD

/  DIV

> GT

>= GE

== EQ

!=   NE

<  LT

<= LE

!   NOT

AND

OR

正则  如  "‘123‘ matches ‘\d{3}‘"

三木运算   null==null ?‘Hello‘ : ‘world‘

简单三目运算         true ? : false     

          null ? : false

 

class表达式

//        String str = "T(String)"; //Class
//        String str = "T(Integer).MAX_VALUE"; //静态属性
//        String str = "T(Integer).parseInt(‘123‘)"; //静态方法
//        String str = "new java.util.Date()";     //实例化对象
//        String str = "‘hello‘ instanceof T(String)"; //instanceof

 

以上是关于spring-expression-01的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段——CSS选择器

谷歌浏览器调试jsp 引入代码片段,如何调试代码片段中的js

片段和活动之间的核心区别是啥?哪些代码可以写成片段?

VSCode自定义代码片段——.vue文件的模板

VSCode自定义代码片段6——CSS选择器

VSCode自定义代码片段——声明函数