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

本文详细介绍了Spring SPEL表达式在构造List、Map、数组以及集合选择和投影的操作,包括如何创建空集合,以及在表达式中使用#root和#this的规则。同时,还探讨了如何在EvaluationContext中设置变量和注册静态方法以便在SPEL中调用。
摘要由CSDN通过智能技术生成

23.2.9 构造List

在SpEl中可以使用“{e1,e2,e3}”的形式来构造一个List,如下示例中我们就构造了一个List。

@Test
public void test09() {
	ExpressionParser parser = new SpelExpressionParser();
	List<Integer> intList = (List<Integer>)parser.parseExpression("{1,2,3,4,5,6}").getValue();
	int index = 0;
	for (Integer i : intList) {
		Assert.assertTrue(i == ++index);
	}
}

如果我们希望构造的List的元素还是一个List,则可以将构造的List的元素定义为“{e1,e2,e3}”这样的形式,如“{ {1,2},{3,4,5},{6,7,8,9}}”。

@Test
public void test09_1() {
	ExpressionParser parser = new SpelExpressionParser();
	List<List<Integer>> list = (List<List<Integer>>)parser.parseExpression("{
   {1,2},{3,4,5},{6,7,8,9}}").getValue();
	int index = 0;
	for (List<Integer> intList : list) {
		for (Integer i : intList) {
			Assert.assertTrue(i == ++index);
		}
	}
}

如果需要构造一个空的List,则直接将对应的表达式字符串定义为“{}”即可。

23.2.10 构造Map

我们知道Map是可以key-value的形式存在的,在SpEl中如果我们需要构造一个Map则可以使用“{key1:value1,key2:value2}”这样的形式进行定义,即使用大括号包起来,然后key和value之间以冒号“:”分隔构成一个Entry,多个Entry之间以逗号分隔。如下示例中我们就构建了一个key为String,value为Long类型的Map。

@Test
public void test10() {
	ExpressionParser parser = new SpelExpressionParser();
	Map<String, Long> map = (Map<String, Long>)parser.parseExpression("{'key1':1L,'key2':2L}").getValue();
	Assert.assertTrue(map.get("key1").equals(1L));
	Assert.assertTrue(map.get("key2").equals(2L));
}

如果需要构造一个空的Map,则只需指定对应的表达式为“{:}”即可。

@Test
public void test10_1() {
	ExpressionParser parser = new SpelExpressionParser();
	Map<String, Long> map = (Map<String, Long>)parser.parseExpression(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值