SPEL语法

SpEL是一种表达式语言,可以与spring应用程序运行时的对象交互,可简化开发,减少一些逻辑、配置的编写。

能在配置文件中使用,也能在注解中使用(常用于@Value等)

备注:SpEL都是#{}的格式

字面值

整数

#{5}

浮点数

#{3.1415}

科学计数法

#{9.87E4}

字符串(使用单引号/双引号,皆可

#{'hello'}  或 #{"hello"}

boolean值

#{true}

引用Bean并使用其属性与方法

通过ID引用bean

#{a}  //a为bean的id

使用bean的属性

#{a.b}

使用bean的方法

#{a.c()}

可链式调用

#{a.c().toUpperCase()}

通过.?(类型安全的运算符)避免空指针(NullPointerException)

#{a.c()?.toUpperCase()}

即:a.c()存在时才使用toUpperCase()

备注:?.不是三元运算符

使用类类型

即:通过T()可以访问类作用域的方法和常量的话

通过T()获取常量

#{T(java.lang.Math).PI}

通过T()获取方法

#{T(java.lang.Math).random()}

运算符

计算符,如*、+、-...

#{T(java.lang.Math).PI*circle.r^2}

比较运算符

#{a.b==100}

#{a.b eq 100}

三元运算符

#{scoreboard.score > 1000 ? "winner" : "loser"}

正则表达式

#{admin.email matches '[a-zA-Z0-9._%+-]+@[a-zA-Z0-9._%+-]+\.com'}

集合

通过[]引用集合中的一个元素

#{jukebox.song[4].title}

备注:[]也可用于字符串

如:#{'this is a test' [3]}

重点:

集合运算符

.?[](查询运算符)对集合过滤

#{jukebox.songs.?[artist eq 'Aerosmith']}

检查歌曲的artist属性是不是等于Aerosmith,是的话放入新的集合。
 

.^[]”和“.$[]”,它们分别用来在集合中查询第一个匹配项和最后一个匹配项

投影运算符( .![]),它会从集合的每个成员中选择特定的属性放到另外一个集合中

 
 
 
 
 
 
 
 
原文地址:https://www.cnblogs.com/cxygg/p/12517944.html