欢迎来到天天文库
浏览记录
ID:40495654
大小:61.40 KB
页数:28页
时间:2019-08-03
《Spring_ Spring 表达式语言 (SpEL)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、8. Spring表达式语言(SpEL)8.1 介绍Spring表达式语言(简称SpEl)是一个支持查询和操作运行时对象导航图功能的强大的表达式语言.它的语法类似于传统EL,但提供额外的功能,最出色的就是函数调用和简单字符串的模板函数。尽管有其他可选的Java表达式语言,如OGNL,MVEL,JBossEL等等,但Spel创建的初衷是了给Spring社区提供一种简单而高效的表达式语言,一种可贯穿整个Spring产品组的语言。这种语言的特性应基于Spring产品的需求而设计。虽然SpEL引擎作为Spring组合里
2、的表达式解析的基础,但它不直接依赖于Spring,可独立使用。为了整合,许多在本章使用SpEL例子就好像它是一个独立的表达式语言。这就需要创建一些引导如解析器这样的基础构造类。大多数Spring用户将不再需要处理这些基础构建,而是仅将作者表达的字符串进行解析。一个传统的使用例子是集成SpEL去创建XML或者定义Bean的注解,可以选择这里看到表达式支持定义bean.本章讲介绍SpEL的API,其语言语法的特点。在几个地方,Inventor和Inventor’sSociety类被用做表达式解析的目标对象。这些类声
3、明和使用数据一直贯穿本章结尾。8.2 功能概述表达式语言支持以下功能·文字表达式·布尔和关系运算符·正则表达式·类表达式·访问properties,arrays,lists,maps·方法调用·关系运算符·参数·调用构造函数·Bean引用·构造Array·内嵌lists·内嵌maps·三元运算符·变量·用户定义的函数·集合投影·集合筛选·模板表达式8.3 使用Spring的表达接口表达式求值本节介绍了简单的使用SpEL表达语言。完整的语言参考可以在语言参考一节中找到下面的代码使用SpELAPI来解析文本字符串表
4、达式HelloWorld.ExpressionParserparser=newSpelExpressionParser();Expressionexp=parser.parseExpression("'HelloWorld'");Stringmessage=(String)exp.getValue();消息变量的值是简单的“helloworld”。该SpEL类和接口,你最有可能使用的是org.springframework.expression以及它的子包和spel.support。接口ExpressionPa
5、rser负责解析表达式字符串。这个正则字符串例子是通过单引号扩起来的一个字符串排版声明。接口Expression负责解析之前被定义的字符串表达式SpEL支持很多功能特性,如调用方法,访问属性,调用构造函数。作为方法调用的一个例子,我们调用字符串的“CONCAT”的方法。ExpressionParserparser=newSpelExpressionParser();Expressionexp=parser.parseExpression("'HelloWorld'.concat('!')");Stringmes
6、sage=(String)exp.getValue();结果将是HelloWorld!作为调用JavaBean属性的一个例子,String属性“Bytes”在下面被调用了。ExpressionParserparser=newSpelExpressionParser();//invokesgetBytes()Expressionexp=parser.parseExpression("'HelloWorld'.bytes");byte[]bytes=(byte[])exp.getValue();SpEL还支持使用标
7、准的“.”符号,即嵌套属性prop1.prop2.prop3和属性值的设置公共字段也可被访问。ExpressionParserparser=newSpelExpressionParser();//invokesgetBytes().lengthExpressionexp=parser.parseExpression("'HelloWorld'.bytes.length");intlength=(Integer)exp.getValue();字符串的构造函数的调用被一个巧妙的字符代替了。ExpressionPar
8、serparser=newSpelExpressionParser();Expressionexp=parser.parseExpression("newString('helloworld').toUpperCase()");Stringmessage=exp.getValue(String.class);注意这里用到一般方法publicTgetValue(Classde
此文档下载收益归作者所有