spring-expression-01

news/2024/7/5 18:13:47

表达式步骤

    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

 

转载于:https://www.cnblogs.com/blog-747674599/p/9986316.html


http://www.niftyadmin.cn/n/4556787.html

相关文章

【Spring Cloud Alibaba】【Hoxton】Sentinel 入门-限流-降级(一)

1 Nacos 入门-配置中心-集群 2 Sentinel 入门-限流-降级&#xff08;一&#xff09; 3 Sentinel 热点规则-SentinelResource-熔断-持久化&#xff08;二&#xff09; 4 Seata从入门到实战 1 Sentinel 简介 随着微服务的流行&#xff0c;服务和服务之间的稳定性变得越来越重要…

【信源编码技术】实验1-浊音清音爆破音的时域及频域特性分析

实验内容 使用Audacity软件录制浊音、清音和爆破音&#xff0c;生成出其频谱图&#xff0c;观察并对比分析其时域及频域的特性。 浊音、清音、爆破音的语音学定义 浊音 发音时声带振动的音被称为浊音&#xff0c;如m、n、l、r。 清音 发音时声带不振动的音被称为清音&…

如何将下面的C语言程序改为C#语言程序

将readline所获得的字符串分解... 只能自己编码 如果需要把空格作为分隔符的话 上面采取的是一行只能读取一个数的方法 sum2); }} 答案补充 c#里面貌似没有scanf类似的函数 sum1 sum 3 - i]; } sum sum1 sum2; Console.WriteLine("sum{0}/tsum1{1}/tsum2{2}/n" i];…

asp.net 毕业设计遗忘的知识点(四)

简单导航栏menu 1.asp.net menu控件的那个黑色小三角箭头怎么去掉&#xff1f; menu控件的属性StaticEnableDefaultPopOutImage false 2.鼠标悬停背景颜色 在StaticHoverStyle和DynamicHoverStyle中 3.级菜单样式 Level******* 4.静态显示行为 使用“Menu”控件的“StaticDisp…

【Spring Cloud Alibaba】【Hoxton】Sentinel 热点规则-@SentinelResource-熔断-持久化(二)

1 Nacos 入门-配置中心-集群 2 Sentinel 入门-限流-降级&#xff08;一&#xff09; 3 Sentinel 热点规则-SentinelResource-熔断-持久化&#xff08;二&#xff09; 4 Seata从入门到实战 1 热点参数限流 何为热点&#xff1f;热点即经常访问的数据。很多时候我们希望统计某个…

3投资乘数k为多少 2均衡的储蓄量s为多少 已知消费函数为c=100+0.6y i=60试求1均衡国民收入y是多少

如果充业的Yf&#xff1d;1000 为使该经济达到充分就业的均衡状态 那么 so I300 so Y400(2)均衡的储蓄量S 即Y1000.6Y60 则投资量应满足YfCI1000.6YfI&#xff1d;1000 &#xff1a;(1)均衡的国民收入Y (3)如果充分就业的国民收入水平为Yf1000 当市均时SI60 根据产品市场均衡条…

【信源编码技术】实验2-Huffman编码

实验来源 《数据压缩导论&#xff08;第4版&#xff09;》&#xff08;Khalid Sayood著&#xff09;第三章 霍夫曼编码 项目与习题 实验内容 一、利用程序huff_enc和huff_dec进行以下操作&#xff08;在每种情况下&#xff0c;利用由被压缩图像生成的码本&#xff09;。 &a…

用XPath精确定位节点元素selenium使用Xpath定位之完整篇

在利用XSL进行转换的过程中&#xff0c;匹配的概念非常重要。在模板声明语句 xsl:template match ""和模板应用语句xsl:apply-templates select "" 中&#xff0c;用引号括起来的部分必须能够精确地定位节点。具体的定位方法则在XPath中给出。 之所以要在…