SpEL(Spring Expression Language,Spring的表达式语言),这种语言类似于JSP中学习到的EL,但是在整个Spring之中其表达式语言要更加的复杂,而且支持度更加的广泛,它还可以进行方法调用,对象实例化,集合操作等等,但是唯一的难点就是:代码太复杂,表达式太复杂了.
在整个的讲解过程之中,一定要更加深刻的领悟--Spring中针对于字符串的改进之处.
具体操作之前先来观察一下,什么叫表达式以及表达式该怎么使用,
范例:表达式操作
○基础参考(如果不使用表达式实现同样的功能)
public class TestELSimple { public static void main(String[] args) { String str=("Hello "+"World").substring(6,9); System.out.println(str); } }
○表达式实现:以上的实现方式使用的是硬编码的形式完成的,必须有String类,而后才可以利用"对象.方法()"的形式进行操作的调用;
package cn.zwb.demo; 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 TestELSimple { public static void main(String[] args) { String pstr="(\"hello\"+\"world\").substring(6,9)"; ExpressionParser parpser = new SpelExpressionParser(); Expression exp = parpser.parseExpression(pstr); EvaluationContext context=new StandardEvaluationContext(); System.out.println(exp.getValue(context)); } }
通过执行可以发现最为神奇的地方在于,整个Spring的表达式操作之中可以将一个完全的字符串变为了一个可以用于程序执行的语句.当然,这一系列的执行语句需要由一系列的支持类完成,但是至少可以发现,字符串的功能又一次被加强了,在本程序之中给出了以下的几个程序类.
1.表达式解析器:
import org.springframework.expression.ExpressionParser;
○主要扶着根据给定的表达式字符串内容对解析操作进行处理;
2.解析器处理类:
org.springframework.expression.spel.standard.SpelExpressionParser;
○ExpressionParser本身只是一个操作的标准,但是它对应的处理类必须单独设置,本次使用的是Spel标准处理;
3.表达式
org.springframework.expression.Expression;
○将字符串根据指定的解析器进行解析,而后使用这个生成表达式;
4.设置表达式的一些属性信息:
org.springframework.expression.EvaluationContext;
○因为表达式的操作之中可能会存在有某些占位符需要处理,
范例:定义操纵的参数:
package cn.zwb.demo; 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 TestELSimple { public static void main(String[] args) { //1.定义要操作的表达式,使用者更多多的是关注此部分,而不关注具体的解析处理部分, String pstr="(\"hello\"+\"world\").substring(#start,#end)"; //2.要定义一个表达式的解析器,本次使用的是spel表达式解析器; ExpressionParser parpser = new SpelExpressionParser(); //3.使用特定的解析器来处理指定的字符串操作; Expression exp = parpser.parseExpression(pstr); //定义相关的一些环境属性, EvaluationContext context=new StandardEvaluationContext(); context.setVariable("start", "0"); context.setVariable("end", "3"); System.out.println(exp.getValue(context)); } }现在就可以正常使用一个表达式了,同时可以发现,字符差U呢的功能继续加强.