此博客是本人从学生时代开始做笔记所用, 部分是工作所遇问题,做填坑笔记,部分闲来查阅资料,加上自己的理解所总结的学习笔记, 常忙得不可开交,若漏了资料来源,望通知~ 前路漫漫,写点东西告诉自己正在一点点进步,而不要迷失于繁忙。

SpEL表达式

总结自:www.jianshu.com/p/61f7c6fe03ec 

 

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,是的话放入新的集合。
 

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

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




 

posted @ 2019-04-15 16:59  炎泽  阅读(3345)  评论(0编辑  收藏  举报