Spring之SpEL表达式

最近在学习《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]}" />
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值