SpEL:Spring Expression Language
SpEL特性
- 使用Bean的ID来引用Bean
- 调用方法和访问对象的属性
- 对值进行关系、逻辑和算术运算
- 正则表达式匹配
- 集合操作
对于下面这两种要有区分:
SpEL形式:#{ … }
属性占位符:${ … }
SpEL运算符
算术运算:+、-、*、/、%、^
比较运算:<、>、==、<=、>=、lt、gt、eq、le、ge
逻辑运算:and、or、not、|
条件运算:?:
正则表达式:matches
实例
字面量(浮点数、boolean、String值)
: #{1} 最为简单的SpEL表达式
类
:#{T(java.long.System).currentTimeMillis()}
“T()表达式会将java.lang.System视为Java中对应的类型,因此可以调用其static修饰的currentTimeMillis()方法”
:#{setBean.selectArtist()?.toUpperCase()}
?. : 表示前面为空,输出null,不为空,打印出对应的字符串的大写
Bean属性
:#{setBean.title}
系统属性
:#{systemProperties[‘spring.data’]}
集合:
:#{jukebox.song[4].title} 集合第五个元素
查询运算符(.?[])
- 匹配运算法
- {jukebox.songs.?[artist eq ‘alex’]}
查询第一匹配项和最后一项:
:#{jukebox.songs.^[artist eq ‘alex’]}
:#{jukebox.songs.$[artist eq ‘alex’]}
投影运算符
.![]
:#{jukebox.songs.?[artist eq ‘alex’].![title]}