首页 > 代码库 > Spring 表达式语言 (二)
Spring 表达式语言 (二)
续上篇。
SpEL操作集合的能力是很让人着迷的。
为了刚好的展示,我们定义一个Person类。
package org.chen; public class Person{ private int age; private String name; private double salary; // omit the getter and setter }
我们再配置一个包含Person对象的List集合。
<util:list id="persons"> <bean class="org.chen.Person" p:name="CZP" p:age="21" p:salary="20000.0" /> <bean class="org.chen.Person" p:name="JACK" p:age="18" p:salary="15000.0" /> </util:list>
下面看看SpEL操作集合:
使用[]访问:
<property name="chosenPerson" value=http://www.mamicode.com/"#{persons[1]}" />对获取Map对象也类似。
它还可以访问<util:properties>所声明的属性。Spring 还为SpEL创造了两种特殊的选择属性的方式,一种是systemEnvironment,另一种是systemProperties.
前者是机器的环境变量。后者是Java 程序的所有设置属性,一般是-D参数。
<property name="homepath" value=http://www.mamicode.com/"#{systemEnvironment['HOME']}" />
对于自定义的properties文件,先通过<util:properties>加载。
<util:property id=”setting" location="classpath:setting.properties" />
上面展示的选择集合成员,下面是带查询条件的选择。
比如,我们查询工资(salary)高于16000的人。在SpEL只要一个查询运算符(.?[])就可以了.
<property name="highs" value=http://www.mamicode.com/"#{persons.?[salary gt 16000]}“ />
查询运算符会返回一个新的集合。
它还提供了返回查询满足条件的第一个或最后一个的运算符。.^[] , .$[] 这里不再举例。
可能你觉得它和SQL语句的功能有点类似,确实是。它还提供了投影功能(project)。
投影集合运算符 .![]
如返回所有人名字的集合,
<property name="names" values="#{persons.![name]}" />
但投影不局限于单一属性,我们对上面的修改得到名字和年龄的集合,
<property name="names" values="#{persons.![name + ‘,’+ age]}" />
你可能已经想到,我们可以把查询和投影可以一起使用。
<property name="names" values="#{persons.?[salary gt 16000].![name]}" />
正如上面介绍的,SpEL功能可以很强大,但我们一般不建议过度使用它。因为它毕竟是个字符串,难以在IDE下调式。
Spring 表达式语言 (二)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。