11-spring学习-表达式语言
2017-12-19 22:48
225 查看
1,表达式语言的操作形式以及处理流程。
2,在spring中各种表达式字符串的编写。
范例:表达式操作
1)基础参考(如果不使用表达式,实现同样的功能):
2)表达式实现:
以上是通过硬编码形式完成,必须有String类对象,而后才可以利用 “对象.方法” 形式进行操蛋的调用:
执行结果:
![](https://images2017.cnblogs.com/blog/779030/201712/779030-20171219221721100-1976304675.png)
spring表达式操作过程中,可以将一个字符串变为可以用于程序执行的语句。当然这一系列语句需要有一系列支持类完成。
字符串的功能,又一次被加强了。
在本程序给出了以下程序类:
1,表达式解析器:ExpressionParser:
复杂根据给出的表达式字符串内容对解析操作进行处理;
2,解析器处理类:SpelExpressionParser:
ExpressionParser本身只是操作的标准,但是它对应的处理类,必须单独设置,本次使用的是SPel的标准处理;
3,表达式:Expression:
将字符串根据指定的解析器进行解析,而后使用这个生成的表达式。
4,设置表达式的属性信息:EvaluationContext:
因为表达式的操作过程可能会存在一些占位符(如下面这个例子的#start,#end)需要进行处理。
以上定义的表达式字符串里面,设置了两个参数,#start,#end。
通过EvaluationContext实例对象,设置环境属性的值参数值。
操作结果:
![](https://images2017.cnblogs.com/blog/779030/201712/779030-20171219223728193-1734574075.png)
可以发现,除了编写字符串之外,还可以编写数字,甚至各种字符串的数据。那么如果是我们自己编写这种表达式,那么一定要对其进行一个判断。
判断表达式应该有哪些组成,而后拆分组成的内容,最好要进行字符串的相关类型的转换。从而得出最终的计算结果。
![](https://images2017.cnblogs.com/blog/779030/201712/779030-20171219224043756-1390277073.png)
1,首先必须按照指定的结构要求定义表达式,例如:“1+2”.
2,随后需要转变出SpEl的解析器,进行解析的时候,需要按照如下的步骤进行:
1)使用专门的断词器将给定的表达式字符串拆分为spring可以认可的数据格式。
2)随后要根据断词器处理的操作结果,生成相应的语法结构。
3)并且这一个过程中,需要进行表达式对错检查。
3,将已经处理后的表达式定义到一个专门的表达式对象之中,等待最终的结果计算。
4,但是考虑到表达式可能存在部分占位变量内容,所以进行表达式计算之前,需要设置一个表达式上下文对象,进行占位变量内容处理。
5,设置好了变量内容,并且利用表达式对象,就可以计算出表达式最终执行的结果。
2,在spring中各种表达式字符串的编写。
SPEL(spring Express language)
表达式入门
观察一下表达式:范例:表达式操作
1)基础参考(如果不使用表达式,实现同样的功能):
package com.Spring.ELDemo; public class TestSimple { public static void main(String[] args) { String str=("Hello"+" word").substring(4,9); System.out.println(str); } }
2)表达式实现:
以上是通过硬编码形式完成,必须有String类对象,而后才可以利用 “对象.方法” 形式进行操蛋的调用:
package com.Spring.ELDemo; import org.springframework.expression.EvaluationContext; import org.springframework.expression.Expression; import org.springframework.expression.ExpressionParser; import org.springframework.expression.spel.standard.SpelExpressionParser; import org.springframework.expression.spel.support.StandardEvaluationContext; public class TestSimple { public static void main(String[] args) { String pstr="(\"Hello\"+\"word\").substring(5,9)"; //定义解析器 ExpressionParser parser=new SpelExpressionParser(); //解析给出的字符串表达式 Expression exp=parser.parseExpression(pstr); EvaluationContext context=new StandardEvaluationContext(); System.out.println(exp.getValue(context)); } }
执行结果:
![](https://images2017.cnblogs.com/blog/779030/201712/779030-20171219221721100-1976304675.png)
spring表达式操作过程中,可以将一个字符串变为可以用于程序执行的语句。当然这一系列语句需要有一系列支持类完成。
字符串的功能,又一次被加强了。
在本程序给出了以下程序类:
1,表达式解析器:ExpressionParser:
复杂根据给出的表达式字符串内容对解析操作进行处理;
2,解析器处理类:SpelExpressionParser:
ExpressionParser本身只是操作的标准,但是它对应的处理类,必须单独设置,本次使用的是SPel的标准处理;
3,表达式:Expression:
将字符串根据指定的解析器进行解析,而后使用这个生成的表达式。
4,设置表达式的属性信息:EvaluationContext:
因为表达式的操作过程可能会存在一些占位符(如下面这个例子的#start,#end)需要进行处理。
范例:定义操作的参数:
package com.Spring.ELDemo; import org.springframework.expression.EvaluationContext; import org.springframework.expression.Expression; import org.springframework.expression.ExpressionParser; import org.springframework.expression.spel.standard.SpelExpressionParser; import org.springframework.expression.spel.support.StandardEvaluationContext; public class TestSimple { public static void main(String[] args) { //1,定义要操作的表达式,使用者更多关注与此部分 String pstr="(\"Hello\"+\"word\").substring(#start,#end)"; //2,要定义表达式解析器,本次使用的是SpEl表达式解析器 ExpressionParser parser=new SpelExpressionParser(); //3,使用特定的解析器(parser)来处理指定字符串操作 Expression exp=parser.parseExpression(pstr); //4,定义相关的环境属性, EvaluationContext context=new StandardEvaluationContext(); context.setVariable("start", 5); context.setVariable("end", 9); System.out.println(exp.getValue(context)); } }
以上定义的表达式字符串里面,设置了两个参数,#start,#end。
通过EvaluationContext实例对象,设置环境属性的值参数值。
表达式处理原理
需要明确的是,使用表达式过程中,除了可以利用字符串操作外,还可以数学操作。package com.Spring.ELDemo; import org.springframework.expression.EvaluationContext; import org.springframework.expression.Expression; import org.springframework.expression.ExpressionParser; import org.springframework.expression.spel.standard.SpelExpressionParser; import org.springframework.expression.spel.support.StandardEvaluationContext; public class TestSimple2 { public static void main(String[] args) { String pstr="1+2"; ExpressionParser parser=new SpelExpressionParser(); Expression exp=parser.parseExpression(pstr); EvaluationContext context=new StandardEvaluationContext(); System.out.println(exp.getValue(context)); } }
操作结果:
![](https://images2017.cnblogs.com/blog/779030/201712/779030-20171219223728193-1734574075.png)
可以发现,除了编写字符串之外,还可以编写数字,甚至各种字符串的数据。那么如果是我们自己编写这种表达式,那么一定要对其进行一个判断。
判断表达式应该有哪些组成,而后拆分组成的内容,最好要进行字符串的相关类型的转换。从而得出最终的计算结果。
操作流程
![](https://images2017.cnblogs.com/blog/779030/201712/779030-20171219224043756-1390277073.png)
1,首先必须按照指定的结构要求定义表达式,例如:“1+2”.
2,随后需要转变出SpEl的解析器,进行解析的时候,需要按照如下的步骤进行:
1)使用专门的断词器将给定的表达式字符串拆分为spring可以认可的数据格式。
2)随后要根据断词器处理的操作结果,生成相应的语法结构。
3)并且这一个过程中,需要进行表达式对错检查。
3,将已经处理后的表达式定义到一个专门的表达式对象之中,等待最终的结果计算。
4,但是考虑到表达式可能存在部分占位变量内容,所以进行表达式计算之前,需要设置一个表达式上下文对象,进行占位变量内容处理。
5,设置好了变量内容,并且利用表达式对象,就可以计算出表达式最终执行的结果。
相关文章推荐
- Spring学习(二十三)Spring表达式语言介绍
- Spring学习笔记--Spring表达式语言SpEL
- Spring学习记录(四)Spring表达式语言:SpEL
- Spring学习第九天:Spring表达式语言Spel
- Spring3表达式语言(SpEL)学习笔记
- Spring3表达式语言(SpEL)学习笔记
- 【Spring学习笔记】之【5.3 Spring表达式语言之SpEL语法】
- Spring3表达式语言(SpEL)学习笔记
- Spring学习记录(七)---表达式语言-SpEL
- Spring3表达式语言(SpEL)学习笔记
- Spring3表达式语言(SpEL)学习笔记
- Spring学习----------Spring表达式语言介绍
- 【Spring学习笔记】之【5.1 Spring表达式语言之概述】
- Spring入门学习——使用Spring表达式语言
- 【Spring学习13】表达式语言(Spring EL)
- 【Spring学习笔记】之【5.2 Spring表达式语言之SpEL基础】
- Spring 框架表达式语言(SpEL)
- 13-spring学习-class类型表达式
- Spring表达式语言:SpEL
- Spring3 表达式语言(SpEL)介绍