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

.^[]”和“.$[]”,它們分別用來在集合中查詢第一個匹配項和最后一個匹配項

投影運算符( .![]),它會從集合的每個成員中選擇特定的屬性放到另外一個集合中




 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM