Spring-SpEL:Spring表达式语言全称为“Spring Expression Language”,缩写为“SpEL”SpEL是单独模块,只依赖于core模块,不依赖于其他模块,可以单独使用。
支持SpEL的Jar包:“org.springframework.expression-3.0.5.RELEASE.jar”
例子: 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; @Test public void helloworld(){ // 解析器 ExpressionParser parser = new SpelExpressionParser(); // 解析表达式 Expression expression = parser.parseExpression("('Hello' + ' World').concat(#end)"); // 上下文环境 EvaluationContext context = new StandardEvaluationContext(); context.setVariable("end", "!"); Assert.assertEquals("Hello World!", expression.getValue(context)); }
代码分析:
1)创建解析器:SpEL使用ExpressionParser接口表示解析器,提供SpelExpressionParser默认实现;
2)解析表达式:使用ExpressionParser的parseExpression来解析相应的表达式为Expression对象。
3)构造上下文:准备比如变量定义等等表达式需要的上下文数据。
4)求值:通过Expression接口的getValue方法根据上下文获得表达式值。
bean定义中使用SpEL
例子: