Spring(23)——SPEL表达式(一)

本文介绍了Spring的表达式语言SpEL,包括其作为独立工具和在Spring应用中的使用。SpEl支持算术、逻辑和比较运算,字符串操作,方法调用,以及在特定EvaluationContext和rootObject下的表达式解析。通过示例展示了如何访问List、Array、Map等数据结构的元素。
摘要由CSDN通过智能技术生成

23 SpEl

23.1 简介

Spring也有自己的EL,叫Spring Expression Language,简称SpEl。其可以在程序中单独使用,也可以在Spring应用中进行bean定义时使用。其核心是org.springframework.expression.Expression接口,Spring使用该接口来表示EL中的表达式。通过Expression接口的系列getValue()方法我们可以获取对应Expression在特定EvaluationContext下的值,也可以通过其系列setValue()方法来设值。对应的Expression通常不是由我们直接来new对应实现类的实例,而是通过Spring提供的org.springframework.expression.ExpressionParser接口的系列parseExpression()方法来将一个字符串类型的表达式解析为一个Expression。以下是一个简单的示例,在该示例中我们将字符串表达式“1+2”解析为一个Expression,然后进行计算得出其值为3。

@Test
public void test() {
	String expressionStr = "1+2";
	ExpressionParser parser = new SpelExpressionParser();
	Expression expression = parser.parseExpression(expressionStr);
	Integer val = expression.getValue(Integer.class);
	System.out.println(expressionStr + "的结果是:" + val);
}

Expression接口有一系列的getValue()方法,当其不接收任何参数时表示将会把Expression的计算结果当做一个Object进行返回,如果我们希望返回的是特定的类型,则可以传递对应的类型作为getValue()方法的参数,如上述示例中传递的Interger.class。我们也可以通过给Expression的getValue()方法传递EvaluationContext用以获取在特定环境下的计算结果,也可以传递一个Object作为Expression计算的rootObject。关于Expression接口的更多介绍请参考Spring的API文档。

23.2 示例

SpEl可以支持一般的算术运算,也可以支持逻辑运算,还可以支持对象的方法调用等。下面我们来看一些对应用法的示例。

23.2.1 算术运算

SpEl支持的算术运算可以是加、减、乘、除、求余、指数等。下面是一个对应的示例。

@Test
public void test01() {
	ExpressionParser parser = new SpelExpressionParser();
	Assert.assertTrue(parser.parseExpression("(1+2)*5 + 8-6/2").getValue().equals(20));//加减乘除
	Assert.assertTrue(parser.parseExpression("8%3").getValue().equals(2));//求余
	Assert.assertTrue(parser.parseExpression("2.0e3").getValue().equals(2000.0));//指数
	Assert.assertTrue(parser.parseExpression("2^3").getValue().equals(8));//指数
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值