Spring之SpEL表达式

来源:互联网 发布:淘宝u站关闭了 编辑:程序博客网 时间:2024/04/29 19:04

最近在学习《Spring实战》一书的过程中发现Spring中的表达式SpEL的应用范围还是很广泛的,特意整理一下SpEL的用法如下:
首先,说一说SpEl表达式支持的特性有:

使用Bean的ID来引用Bean;
调用方法和访问对象的属性;
对值进行算术、关系和逻辑运算;
正则表达式匹配;
集合操作;

1、引用Bean和访问Bean的属性略过,以下是访问Bean的方法:

<property name = "song" value = "#{songSelector.selectSong()}"/>

2、通过使用T()运算符调用类作用域的方法

<property name = "multiplier" value = "#{T(java.lang.Math).PI}"/><property name = "randomNumer" value = "#{T(java.lang.Math).random()"/>

pEL支持所有java基础算术运算符,还支持^运算符进行乘方运算

4、SpEL支持比较运算符和其文本替代方式:

<property name = "hasCapacity" value = "#{counter.total le 10000}" />

le 即小于等于。类似还有,eq (==),lt(<),gt(>),ge(>=)

5、SpEL对正则表达式的支持

<property name = "validEmail" value = "#{admin.email matches '[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.com'}"/>

6、对集合的操作
通过索引访问集合:

<property name = "chosenCity" value = "#{cities[2]}"/> 

访问.properties配置文件所声明集合中的属性:

<util:properties id = "settings" location = "classpath:settings.properties"/><property name = "accessToken" value = "{settings['twitter.accessToken']}"/>

访问systemEnvironment和systemProperties:
systemEnvironment包含应用程序所在机器上的所有环境变量。
systemProperties包含了Java应用程序启动时所设置的所有属性。
示例:

<property name = "homePath" value = "#{systemEnvironment['HOME']}" /><property name = "homePath" value = "#{systemProperties['application.home']}"/>

查询集合成员
利用” . ?[ ] “运算符查询满足条件的集合成员:

<property name = "bigCities" value = "#{cities.?[population gt 100000]}" />

同样还有“ . ^[ ] ”查询第一个匹配项和 “ . $[ ] ”查询最后一个匹配项

投影集合
集合投影是从集合的每一个成员中选择特定的属性放入一个新的集合中,
利用SpEL的投影运算符“ .![ ] ”可以实现集合投影。

<property name = "cityNames" value = "#{cities.![name]}" />
原创粉丝点击